{"projects": [{"components": [{"description": "Command line interface", "name": "CLI"}, {"description": "", "name": "DOCS"}, {"description": "", "lead": "557058:8f2288c8-aafd-4043-8c36-5121d7f0a7df", "name": "UX"}], "description": "", "externalName": "Puppet Strings", "issues": [{"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["DOCS"], "created": "2025-03-10T00:22:00.000000", "creator": "6220dbe7932f0f0071677f27", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3ba1e198"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0m5vd:"}], "description": " It mentioned that only the listed are tested but did not specifically mentioned that Solaris and AIX is not supported for the patching under \u201cConfiguring Patch Management\u201d section", "duedate": "2025-03-31T00:00:00.000000", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "63986", "fixedVersions": [], "id": "63986", "issueType": "Bug", "key": "PDOC-306", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "6220dbe7932f0f0071677f27", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "10/Mar/25 12:22 AM", "summary": "Puppet Enterprise Doc under \"Configuring Patch Management\"  OS support is not clear regarding the support for Solaris and AIX.", "timeSpent": "PT0S", "updated": "2025-03-10T00:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5b0340d43eafdb09dee5bc3a", "body": "These docs are generated from the Puppet code and I think this is a puppet strings issue:\nWhen I run puppet strings in the puppet repo with \n{code:bash}\npuppet strings generate --emit-json file.json\n{code}\n\nI get:\n\n{code:json}\n{\n  \"name\": \"checksum\",\n  \"description\": \"The checksum type to use when determining whether to replace a file's contents.\\n\\nThe default checksum type is\",\n  \"values\": [\n     \"Puppet::Util::Checksums.known_checksum_types\"\n   ]\n}\n{code}\n\nLooks like it should probably be expanding known_checksum_types here: https://github.com/puppetlabs/puppet/blob/2f14ddd269c26cba36771d9b3464c2c29422e46a/lib/puppet/util/checksums.rb#L10-L24\nAlso, https://github.com/puppetlabs/puppet/blob/2f14ddd269c26cba36771d9b3464c2c29422e46a/lib/puppet/type/file/checksum.rb#L10 is returning nil, so the docs just say \u201cThe default checksum type is \u201d", "created": "2022-02-10T13:30:00.000000"}], "components": [], "created": "2022-01-14T09:29:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a8b1f38"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o0djko:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Feb/22"}], "description": "The docs page for the file type lists the following allowed values for the {{checksum}} parameter:\n\n{quote}\nAllowed values:\n\n  * Puppet::Util::Checksums.known_checksum_types\n{quote}\n\nhttps://puppet.com/docs/puppet/6/types/file.html#file-attribute-checksum\nhttps://puppet.com/docs/puppet/7/types/file.html#file-attribute-checksum\n\nSelecting the right checksum has a huge impact on the performance of file server operations and can be the difference between a Puppet Server handling agent load or getting pounded into dust by file metadata requests.\n\nBecause of the extreme effect on performance, we must enumerate the available values in the docs:\n\n* sha256\n* sha256lite\n* md5\n* md5lite\n* sha1\n* sha1lite\n* sha512\n* sha384\n* sha224\n* mtime\n* ctime\n* none\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32524", "fixedVersions": [], "id": "32524", "issueType": "Bug", "key": "PDOC-305", "labels": ["generated-docs", "puppet"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet docs for the file type are missing available checksum choices", "timeSpent": "PT0S", "updated": "2022-02-10T13:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2021-05-27T13:18:00.000000", "creator": "6220db96c4d0fe0069535219", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11cb8a4d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o08rxv:"}], "description": "Hello, It seems the pdk puppet strings command is able to detect a missing param tag, but the output shows as 100% documented.\n\nSteps to reproduce:\n\n\u00a0\n{code:java}\npdk --version\n2.1.0\n\u00a0\npdk new module puppet-foo --skip-interview\n\u00a0\ncd foo; pdk new class foo\n{code}\nAdd a param without documentation, such as \"String $foo = 'bar',\" to manifests/init.pp, and run:\n\n\u00a0\n{code:java}\npdk bundle exec puppet strings generate --format markdown\npdk (INFO): Using Ruby 2.7.2\npdk (INFO): Using Puppet 7.5.0\n[warn]: Missing @param tag for parameter 'foo' near manifests/init.pp:7.\nFiles: 1\nModules: 0 ( 0 undocumented)\nClasses: 0 ( 0 undocumented)\nConstants: 0 ( 0 undocumented)\nAttributes: 0 ( 0 undocumented)\nMethods: 0 ( 0 undocumented)\nPuppet Classes: 1 ( 0 undocumented)\nPuppet Data Types: 0 ( 0 undocumented)\nPuppet Defined Types: 0 ( 0 undocumented)\nPuppet Data Type Aliases: 0 ( 0 undocumented)\nPuppet Providers: 0 ( 0 undocumented)\nPuppet Functions: 0 ( 0 undocumented)\nPuppet Types: 0 ( 0 undocumented)\nPuppet Plans: 0 ( 0 undocumented)\nPuppet Tasks: 0 ( 0 undocumented)\n 100.00% documented{code}\nBut the output shows 100.00% documented. Is this expected?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32414", "fixedVersions": [], "id": "32414", "issueType": "Bug", "key": "PDOC-304", "labels": ["customer0"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "6220db96c4d0fe0069535219", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings Undocumented Param Detection", "timeSpent": "PT0S", "updated": "2021-06-02T17:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "6220db7d49c90000701fd08b", "body": "Created in error", "created": "2020-12-10T04:06:00.000000"}], "components": [], "created": "2020-12-10T04:05:00.000000", "creator": "6220db7d49c90000701fd08b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56ec3252"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o05g9s:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_64896_*|*_6_*:*_1_*:*_0"}], "description": "Currently the plan_run call does not support scope filtering and the target parameter is hard coded to point at the pe server.\n\nOnce this has been integrated, remove the line below the todo in ;\n*file* - teamsui/src/ui/views/Orchestration/views/NewRunTask/NewRunTask.jsx\n*function* -\u00a0validateFormData\nthen uncomment the code above it\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32492", "fixedVersions": ["connectLA"], "id": "32492", "issueType": "Story", "key": "PDOC-302", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "6220db7d49c90000701fd08b", "resolution": "Fixed", "resolutionDate": "2020-12-10T04:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "[Task view] Initiate plan run scope", "timeSpent": "PT0S", "updated": "2021-04-16T12:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-03-11T03:09:00.000000", "creator": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d26dcc0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|o00c88:"}], "description": "Hi,\nI think it makes sense to enhance puppet-strings with at lease those two tags:\n* license\n* author\n\nIn big modules it's possible that certain files come from external contributors with a different license than the one listed in the metadata.json.\n\nTo properly give credit to authors it also makes sense to list them in a file if they contributed the whole file.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32523", "fixedVersions": [], "id": "32523", "issueType": "Improvement", "key": "PDOC-300", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:9a0622ba-116b-4661-81b3-6a2a72bf7d68", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add support for additional tags like author/license", "timeSpent": "PT0S", "updated": "2020-03-11T03:09:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2020-02-04T18:56:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@501284ec"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzx3z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1550845896_*|*_5_*:*_1_*:*_0"}], "description": "A release might be nice. We can release the @enum tag, at least. \n\nInstructions: https://github.com/puppetlabs/puppet-strings/blob/master/CONTRIBUTING.md#cutting-a-release", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32355", "fixedVersions": [], "id": "32355", "issueType": "Task", "key": "PDOC-298", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2020-02-22T17:43:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Release 2.4.0", "timeSpent": "PT0S", "updated": "2020-02-22T17:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "Ping [~accountid:623c100c4a57610068e74585]", "created": "2020-02-04T07:47:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Can we stay away from the word \"advanced\"? It doesn't carry a lot of useful meaning: How do I know if my use case is advanced? I am a smart person and/or I know a lot about Puppet, I think I should use this advanced feature. Or conversely, I do not feel like I am \"advanced\" at Puppet, so even if I do need this parameter, maybe I should leave it alone.\n\nIf it's for edge cases or special specific uses, or if it's dangerous and can make things go sideways, it should say that in the description. But advanced doesn't tell you very much.\n\n", "created": "2020-02-04T08:51:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "I agree with\u00a0[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79]'s point that this really seems better addressed with words in the parameter description. \"advanced\" is really subjective and not really useful on it's own.", "created": "2020-02-04T18:04:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Initially I opened https://puppet.atlassian.net/browse/PDOC-267 which is more generic. Advanced is just one possible group. Should this be closed as a duplicate?", "created": "2020-06-03T12:09:00.000000"}], "components": [], "created": "2020-02-04T07:45:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6977c4d6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzzwkf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Feb/20"}], "description": "It would be nice to be able to differentiate the parameters that are recommended to use and those that are advanced and should rarely be used. Or arbitrary named groups in the docs.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32573", "fixedVersions": [], "id": "32573", "issueType": "Bug", "key": "PDOC-297", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add tag for marking class parameters as \"advanced\"", "timeSpent": "PT0S", "updated": "2020-06-03T12:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4a827910a200718ac35d", "body": "A PR which I believe implements this correctly is up here for consideration: [https://github.com/puppetlabs/puppet-strings/pull/215]\n\nThanks!", "created": "2019-10-20T08:08:00.000000"}], "components": [], "created": "2019-10-20T08:06:00.000000", "creator": "623a4a827910a200718ac35d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b600950"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzw89z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_812710496_*|*_10009_*:*_1_*:*_9957620608_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5750_*|*_10005_*:*_1_*:*_20847"}], "description": "Puppet Strings currently supports, via YARD, the ability to add extended documentation to a parameter which expects a hash to document the various keys expected using the {{@option}} tag. This is quite useful.\n\nParameters that are of the Puppet {{Enum}} type would also benefit from this type of extended option documentation. However, the {{@option}} tag is not suitable as it expects a data type to be provided, which makes no sense in the context of an {{Enum}}. You can put an arbitrary value as the datatype, but it results in a poor user experience for both the person documenting and the person reading the documentation.\n\nInstead I propose adding a new tag, {{@enum}}, that behaves similarly to {{@option}} but does not expect a data type to be passed and renders the results accordingly (but otherwise similarly to {{@option}}).\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32353", "fixedVersions": [], "id": "32353", "issueType": "New Feature", "key": "PDOC-295", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4a827910a200718ac35d", "resolution": "Fixed", "resolutionDate": "2020-02-21T22:52:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add support for @enum tag ", "timeSpent": "PT0S", "updated": "2020-02-21T22:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:45fa3568-deb5-4da5-b894-a1ec07f1c138", "body": "I think you may have used the wrong template for this ticket... This template is for requesting a performance experiment.  Let me know if I am wrong, otherwise I will clear out the stuff that is making this show up on SLV.", "created": "2020-01-09T17:00:00.000000"}, {"author": "557058:c6973327-1553-427a-99b1-d873fe72306c", "body": "AFAIR I didn't pick any template when creating this ticket, so i'm not sure what is/isn't needed.\u00a0\n\n\u00a0", "created": "2020-01-10T08:46:00.000000"}, {"author": "557058:45fa3568-deb5-4da5-b894-a1ec07f1c138", "body": "Sometimes Jira saves settings from the previous ticket you used, or in really fun cases, that someone else used... Anyway, I removed the things the template did that made this show up on the SLV board, but I don't know if there is anything that needs to be done to get this seen by the right people (every team does it differently).  And I can't remove the template, but that shouldn't really matter.", "created": "2020-01-10T09:32:00.000000"}], "components": ["DOCS"], "created": "2019-10-11T20:38:00.000000", "creator": "557058:c6973327-1553-427a-99b1-d873fe72306c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73e48146"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxlpj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Jan/20"}], "description": "*As a*\u00a0Module Developer\n *I want* to be able to document my type alias struct parameters\n *So that* my module consumers can understand the purpose of the struct and each parameter within it.\n\nPossibly related to PDOC-226 & PDOC-215\n\n[~accountid:557058:6713b848-54a4-4f2e-9636-a24860d9c3f2] asked me to C/P our slack discussion so that there would be context of the desired feature capability. (see Below).\n\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:07 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846078031300]\nI was thinking that the\u00a0{{alias}}\u00a0could/should be replaced if i provide any\u00a0{{@param}}\u00a0directives. And maybe then pdk can raise a warning about not having any custom param descriptions for\u00a0{{type => structs}}\u00a0and an error if one param description is provided but not\u00a0_all_\u00a0\u00a0are defined? WDYT?\n[10:09 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846151033100]\nthe alias is informational but not very useful to consumers - module developers should be providing meaningful docs on the params in the structs\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:09 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846155033200]firstly, I think I understand your concern...what I'm thinking is, that\u00a0_technically_\u00a0those are data type aliases.\u00a0\u00a0So I'm trying to figure out what the ramifications are\n[10:10 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846206033900]\nI wonder if Yard even cares ...\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:10 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846210034000]maybe i\u2019m abusing the type aliases\u00a0!https://a.slack-edge.com/production-standard-emoji-assets/10.2/apple-medium/1f604@2x.png!\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:10 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846217034300]Nah... you're not\n[10:10 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846223034500]\nas in what you're doing is legit\n[10:10 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846227034700]\n!https://a.slack-edge.com/production-standard-emoji-assets/10.2/apple-large/1f642@2x.png!\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:10 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846235035200]!https://a.slack-edge.com/production-standard-emoji-assets/10.2/apple-large/1f44d@2x.png!\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:10 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846241035500]it's that this isn't the only case\n[10:10 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846252036000]\nStruct, Object and I think another one will have the same problem\n[10:11 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846271036800]\nbut parsing that it going to be a major pain in the bum\u00a0(edited)\u00a0\n[10:11 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846282037300]\ne.g. what if you had nested structs\u00a0!https://a.slack-edge.com/production-standard-emoji-assets/10.2/apple-medium/1f4a5@2x.png!\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:11 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846288037400]makes sense - i am trying to figure out how I should be provding guidance to my module consumers about the structs, so they know what/how to build their hiera data correclty\n[10:11 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846313038200]\nboo, Nest structs, while valid, are probably a code smell\n[10:11 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846318038500]\nIMHO\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:11 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846319038600]does\u00a0{{Variant[String, Struct[....]]}}\n[10:12 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846329039000]\nHow would I express that ... hrmm\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:12 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846341039200]Ahh. i see your point.\n[10:12 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846370040000]\nbut that isn\u2019t a\u00a0_named_\u00a0struct, so does it have the same consideration?\u00a0(edited)\u00a0\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:13 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846381040400]!https://a.slack-edge.com/production-standard-emoji-assets/10.2/apple-large/1f937@2x.png!\n[10:13 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846387040600]\nJust spitballing edge cases\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:13 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846403041100]no, makes sense to consider all the possibiliites\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:13 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846417041500]that's why for my Version 1 implementation just went \"Spit out a string\"\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:13 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846428041700]!https://a.slack-edge.com/production-standard-emoji-assets/10.2/apple-large/1f604@2x.png!\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:14 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846441041900]Better than before -\u00a0!https://a.slack-edge.com/production-standard-emoji-assets/10.2/apple-medium/1f642@2x.png!\n[10:14 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846462042700]\nI wonder if Yard tagging could be interspersed into the type definition\n[10:14 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846473043100]\nPuppet may not like that\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:14 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846474043200]maybe v 1.5 a reordering? - eg: i put the params on the docs, and it spit out yard info, here\u2019s what the markdown looks like:\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:15 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846521044200]So something like\nType xxx = Variant[\n \u00a0 String,\n \u00a0 Struct[\n \u00a0 \u00a0 \u00a0 # @param ....\n \u00a0 \u00a0 \u00a0 blah =>\n \u00a0 ]\n]\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:15 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846524044300]\nEntry.\u00a0\n{{### Dispatcher::Farm::Renderer}}{{\u200b}}{{Renderer attributes hash. Defines the parameters used to configure the */renderer* directive of a farm.}}{{\u200b}}{{Alias of `Struct[{}}\nClick to expand inline (22 lines)\n\u00a0\n[10:15 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846534044800]\noh, i didn\u2019t do it that way, i was doing it like\u2026.\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:15 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846545045100]I know I don't have the code for that\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:16 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846564045300]\n\u00a0\n{quote}# Renderer attributes hash. Defines the parameters used to configure the */renderer* directive of a farm.\n#\n# @summary A hash of renderer attributes.\n# Used to configure the `/renderer` parameter instance of a Farm.\n#\n# @param hostname\n# The hostname for the renderer.\n#\ntype Dispatcher::Farm::Renderer = Struct[{quote}\n\u00a0\n\u00a0\n[10:16 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846589046200]\npuppet strings did the rest - i was just seeing what happend when i did this -\u00a0!https://a.slack-edge.com/production-standard-emoji-assets/10.2/apple-medium/1f937@2x.png!\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:16 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846599046400]That example you give is fine if and only if it's an alias of Struct\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:16 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846619046900]Yeah i think you just lost me\u00a0!https://a.slack-edge.com/production-standard-emoji-assets/10.2/apple-medium/1f604@2x.png!\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:17 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846630047300]S'all good\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:17 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846631047600]ooh, i get you\n[10:17 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846642048000]\nyour type is either a string\u00a0_or_\u00a0a struct\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:17 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846647048200]Yeah\n\u00a0\n[bstopp|https://app.slack.com/team/U7C8ALC4T]\u00a0[10:17 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846654048500]Huh. Never thought of doing that\n\u00a0\n[Glenn Sarti|https://app.slack.com/team/U1154M24W]\u00a0[10:17 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846656048700]which wouldn't be\u00a0_that_\u00a0common ... but\n[10:17 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846660048900]\nit's still legit\n[10:17 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846677049400]\nor\u00a0{{Optional[Struct...]}}\n[10:18 PM|https://puppetcommunity.slack.com/archives/C11LCKKQ9/p1570846681049600]\nwhich would be more common\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32572", "fixedVersions": [], "id": "32572", "issueType": "Improvement", "key": "PDOC-294", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:c6973327-1553-427a-99b1-d873fe72306c", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Improve Type Alias Docs - Parameter Support", "timeSpent": "PT0S", "updated": "2020-02-18T17:47:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "6243b7b74fe01d006ba5c73e", "body": "+1 for this!", "created": "2019-10-04T12:28:00.000000"}, {"author": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "body": "This could probably be easily put into puppet-lint with auto-correct.", "created": "2020-02-05T06:30:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "[~accountid:557058:9524215b-1a7d-407b-b7d2-e020f3970c4d] what do you think about an puppet-lint plugin that could do this? Does that seem like a good fit?", "created": "2020-02-18T17:52:00.000000"}], "components": [], "created": "2019-10-04T12:27:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@74b14879"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxgr3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Oct/19"}], "description": "It is time consuming to repeat all of the parameters for a given module in the header of the module when first creating documentation.\n\nIt would be great if there could be a command such as {{puppet strings --generate-header}} <file> that would output an appropriate header template to STDOUT.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32489", "fixedVersions": [], "id": "32489", "issueType": "Improvement", "key": "PDOC-293", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Would like a documentation header generation function for puppet strings", "timeSpent": "PT0S", "updated": "2020-02-18T17:52:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "This would be incredibly useful. I can see the output getting *VERY* long though, especially if we iterate supported platforms. I wonder if this is worth another {{PARAMETER_DEFAULTS.md}} doc?", "created": "2019-10-01T11:41:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Would also need to understand the hiera.yaml to ensure all is based on data files inside the module. When using hiera to obtain the values (could be using deep merges etc) it needs to evaluate puppet code - and puppet code can call functions so you would need to make sure it is safe to evaluate logic when generating documentation (which was a problem before PDOC as you needed to load the code to get the docs).\n\nI think it would be better to have a separate tool that generates the default parameters part as data and that PDOC can make use of that when producing the docs. This way it is up to the publisher to run it in a safe manner whereas anyone else can generate docs without risking evaluating user code.", "created": "2019-10-01T12:23:00.000000"}], "components": [], "created": "2019-10-01T09:00:00.000000", "creator": "557058:8ed100be-9a13-4ed1-92d2-88ac897d6774", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f30f536"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzxcun:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Oct/19"}], "description": "I'm wondering if it would make sense to pull parameter defaults from a module's \n{{data}} directory.\n\nThis would require to\n\n- either query the data using *no* facts, to ensure that these are platform agnostic defaults, *or*\n- query the data while iterating thru {{on_supported_platform}} and provide a list of defaults ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32552", "fixedVersions": [], "id": "32552", "issueType": "New Feature", "key": "PDOC-292", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:8ed100be-9a13-4ed1-92d2-88ac897d6774", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Pull defaults from data directory", "timeSpent": "PT0S", "updated": "2019-10-01T12:23:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] to verify if this is still an issue.", "created": "2020-02-18T17:55:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "I think Kris Bosland and I might have fixed this as we completed other work", "created": "2020-04-14T17:11:00.000000"}], "components": [], "created": "2019-08-30T14:53:00.000000", "creator": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a73ed15"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwr3j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Feb/20"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_14875357307_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_4832103114"}], "description": "When you run Strings on a Ruby function that includes correctly formatted tags and text, the text is not included in the HTML, even though it is present in the JSON output.\n\nIn the docs tooling that is not a part of strings, but uses strings code for part of it's operation:\n * text is included in the json dumped from puppet strings if the tags are correctly formatted, indicating that it is parsed correctly but not output in the HTML ERB file.\n * text of params is included in generated docs\n * examples are not included in generated docs, but this seems to be a problem with docs' ERB (separate from puppet strings ERB files)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32351", "fixedVersions": [], "id": "32351", "issueType": "Task", "key": "PDOC-290", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Minor", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "resolution": "Cannot Reproduce", "resolutionDate": "2020-04-14T17:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings HTML output for functions does not include text from JSON", "timeSpent": "PT0S", "updated": "2020-04-14T17:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-08-20T17:41:00.000000", "creator": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71d64a45"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwihj:"}], "epicLinkSummary": "Strings needs to document core puppet references (indirection, configuration, metaparameter, etc)", "estimate": "PT0S", "externalId": "32484", "fixedVersions": [], "id": "32484", "issueType": "New Feature", "key": "PDOC-289", "labels": [], "originalEstimate": "PT0S", "parent": "32433", "parentSummary": "Strings needs to document core puppet references (indirection, configuration, metaparameter, etc)", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Generate reference docs for core configuration", "timeSpent": "PT0S", "updated": "2019-08-20T17:41:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-08-18T03:53:00.000000", "creator": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e1fac3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwgrz:"}], "description": "The summary / index for functions that is generated when producing markdown contains too much text and truncates it.\n\nFor example:\n{code}\ntahu::attributes: Returns the instance attributes of an Object or Type. An instance attribute is an attribute of a value. Only Object values have inst\n{code}\nFor documentation that looks like this:\n{code}\n# Returns the instance attributes of an `Object` or `Type`.\n#\n# An *instance attribute* is an attribute of a value. Only `Object` values have\n# instance attributes; for example the `name` of a `Person`. Contrast this\n# with a *type attribute* which is an attributes of a `Type`. The type attributes\n{code}\n\nI expected that it would only use only the first sentence, or at least stop at the first blank line.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32450", "fixedVersions": [], "id": "32450", "issueType": "Bug", "key": "PDOC-288", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "markdown summary uses too much summary text and truncates", "timeSpent": "PT0S", "updated": "2020-02-18T17:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Example that results in bad output:\n{code}\n# Converts a value from a `RichData` compliant data structure to the actual runtime values.\n#\n# This function is useful as deserialization of a rich data structure - for example something read from\n# a yaml file. This is the reverse of `tahu::convert_to_rich_data()`.\n#\n# See\n# * `tahu::convert_to_rich_data` for how to serialize.\n# * [Pcore Data Representation Specification](https://github.com/puppetlabs/puppet-specifications/blob/master/language/data-types/pcore-data-representation.md)\n#\n#\n# @example Deserializing a value\n#   $r = /this is a regexp/\n#   $serialized = tahu::convert_to_rich_data($r)\n#   $deserialized = tahu::convert_from_rich_data($serialized)\n#   notice( $deserialized == $r)\n#   # would notice: true\n#\nPuppet::Functions.create_function(:'tahu::convert_from_rich_data', Puppet::Functions::InternalFunction) do\n\n  # @param value - The rich data value to convert from\n  dispatch :from_rich_data do\n    scope_param\n    required_param 'RichData', :value\n    return_type 'Any'\n  end\n\n  def from_rich_data(scope, val)\n    Puppet::Pops::Serialization::FromDataConverter.convert(val)\n  end\nend\n{code}", "created": "2019-08-18T03:19:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Hi [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd]! I'm wondering if this is a formatting issue. For a Ruby function, tags  should go before the dispatch call. Also, I _believe_ that there should be no lines between the `Puppet::Function...` and the following Strings tags. Can you please check to see if that fixes the issue, and let us know here?\n\nSo:\n\n{code}\n# Converts a value from a `RichData` compliant data structure to the actual runtime values.\n# This function is useful as deserialization of a rich data structure - for example something read from\n# a yaml file. This is the reverse of `tahu::convert_to_rich_data()`.\n#\n# See\n# * `tahu::convert_to_rich_data` for how to serialize.\n# * [Pcore Data Representation Specification](https://github.com/puppetlabs/puppet-specifications/blob/master/language/data-types/pcore-data-representation.md)\nPuppet::Functions.create_function(:'tahu::convert_from_rich_data', Puppet::Functions::InternalFunction) do\n  # @example Deserializing a value\n  #    $r = /this is a regexp/\n  #    $serialized = tahu::convert_to_rich_data($r)\n  #    $deserialized = tahu::convert_from_rich_data($serialized)\n  #    notice( $deserialized == $r)\n  #    # would notice: true\n  # @param value - The rich data value to convert from\n  dispatch :from_rich_data do\n    scope_param\n    required_param 'RichData', :value\n    return_type 'Any'\n  end\n\n  def from_rich_data(scope, val)\n    Puppet::Pops::Serialization::FromDataConverter.convert(val)\n  end\nend\n{code}", "created": "2019-08-19T10:26:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] None of the suggested changes make any difference - the output is identical.", "created": "2019-08-19T10:50:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Thank you for checking [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd]!", "created": "2019-08-19T11:03:00.000000"}], "components": [], "created": "2019-08-18T03:09:00.000000", "creator": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@663085f0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-96"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzwgrr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Aug/19"}], "description": "For a 4.x function with a single dispatch and where there is documentation for the entire function, then the entire documentation is output twice - once for the function and once for the single dispatch signature.\n\nAdding a second dispatch results in the function level documentation to be output only once.\nTested with markdown format output.", "epicLinkSummary": "Strings needs to document core puppet references (indirection, configuration, metaparameter, etc)", "estimate": "PT0S", "externalId": "32380", "fixedVersions": [], "id": "32380", "issueType": "Bug", "key": "PDOC-287", "labels": [], "originalEstimate": "PT0S", "parent": "32433", "parentSummary": "Strings needs to document core puppet references (indirection, configuration, metaparameter, etc)", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Ruby 4.x function with single dispatch gets docs generated twice", "timeSpent": "PT0S", "updated": "2019-08-30T15:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-08-06T17:56:00.000000", "creator": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@e233a41"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-262"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzw89r:"}], "description": "Step one of resolving these issues is breaking down all the individual bugs here into their own tickets. It may end up being that some of the resulting tickets are duplicates of one another but we can figure that out as we triage them.", "epicLinkSummary": "Puppet Strings output of Puppet types is inconsistent with puppet doc", "estimate": "PT0S", "externalId": "32571", "fixedVersions": [], "id": "32571", "issueType": "Task", "key": "PDOC-286", "labels": [], "originalEstimate": "PT0S", "parent": "32565", "parentSummary": "Puppet Strings output of Puppet types is inconsistent with puppet doc", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "status": "Ready for Engineering", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Break down PDOC-262 description into individual issues", "timeSpent": "PT0S", "updated": "2019-08-06T17:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:6713b848-54a4-4f2e-9636-a24860d9c3f2", "attachments": [], "comments": [{"author": "557058:6713b848-54a4-4f2e-9636-a24860d9c3f2", "body": "PR is at https://github.com/puppetlabs/puppet-strings/pull/209\n\nIn the example above, it was missing a comma in the interface spec.  This PR will fix that issue.", "created": "2019-07-30T07:19:00.000000"}], "components": [], "created": "2019-07-30T06:04:00.000000", "creator": "557058:6713b848-54a4-4f2e-9636-a24860d9c3f2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4676f76f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzw1on:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4475996_*|*_10007_*:*_1_*:*_642053797_*|*_5_*:*_1_*:*_0"}], "description": "Given a manifest of\n{code}\n# A Puppet Data Type in Ruby.\n#\n# @param arg1 [String] String A message parameter.\n# @param arg2 An Optional Numeric parameter.\nPuppet::DataTypes.create_type('ValidModuleDataType') do\n  interface <<-PUPPET\n    attributes => {\n      arg1  => { type => String, value => \"defaultvalue\" }\n      arg2  => { type => Optional[Numeric], value => -1 }\n    }\n    PUPPET\nend\n{code}\n\nThe arg2 type should be automatically inferred as Optional[Numeric] however currently Puppet-Strings (2.3.0) thinks there is no type information for arg2.\n\nWhile not critical, this should be fixed.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32413", "fixedVersions": [], "id": "32413", "issueType": "Improvement", "key": "PDOC-285", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:6713b848-54a4-4f2e-9636-a24860d9c3f2", "resolution": "Fixed", "resolutionDate": "2019-08-06T17:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Infer missing docs types from arguments", "timeSpent": "PT0S", "updated": "2019-08-06T17:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-07-15T15:16:00.000000", "creator": "5fff7df991bb2e01082cf9b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60d45022"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvpqf:"}], "description": "Currently Bolt is pinning the yard gem to 0.9.19 due to an update in 0.9.20 that changes how symbols are parsed. A security alert was recently sent out concerning a vulnerability with 0.9.19, and being able to unpin from 0.9.19 would resolve this issue.\n\nSince the issue caused by 0.9.20 was corrected by a recent PR to puppet-strings ([https://github.com/puppetlabs/puppet-strings/pull/206]), making a release would allow Bolt to unpin the yard gem.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32449", "fixedVersions": [], "id": "32449", "issueType": "Improvement", "key": "PDOC-284", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "5fff7df991bb2e01082cf9b7", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Release dyna_symbols fix", "timeSpent": "PT0S", "updated": "2019-07-15T15:16:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:6713b848-54a4-4f2e-9636-a24860d9c3f2", "body": "Commit that caused the issue - https://github.com/lsegal/yard/commit/225ded9ef38c6d2be5a3b0fc7effbc7d6644768d\n\n", "created": "2019-06-29T02:28:00.000000"}, {"author": "557058:6713b848-54a4-4f2e-9636-a24860d9c3f2", "body": "WIP PR https://github.com/puppetlabs/puppet-strings/pull/205", "created": "2019-06-29T02:29:00.000000"}, {"author": "557058:6713b848-54a4-4f2e-9636-a24860d9c3f2", "body": "PR is ready for merge. https://github.com/puppetlabs/puppet-strings/pull/205", "created": "2019-06-30T19:45:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Fixed by:\u00a0\n\n[https://github.com/puppetlabs/puppet-strings/pull/205]\n\n[https://github.com/puppetlabs/puppet-strings/pull/206]\n\n[https://github.com/puppetlabs/puppet-strings/pull/207]", "created": "2019-07-09T17:59:00.000000"}], "components": [], "created": "2019-06-28T14:44:00.000000", "creator": "5ade3a9f91bc312e6a4a30f3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6410d463"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvgvj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_962101905_*|*_5_*:*_1_*:*_0"}], "description": "Previously a function definition like {{Puppet::Functions.create_function(:'file::exists', Puppet::Functions::InternalFunction) do}} (https://github.com/puppetlabs/bolt/blob/2fc9eb44f0b743c8a07d7f165bf5c646aa142076/bolt-modules/file/lib/puppet/functions/file/exists.rb#L4)  would have a function name of {{file::exists}}. With yard 0.9.20 and puppet strings 2.2.0 the function name renders as {{:'file::exists'}}. For example a call like https://github.com/puppetlabs/bolt/blob/2fc9eb44f0b743c8a07d7f165bf5c646aa142076/Rakefile#L62 will result in json like: \n{code}\n  \"puppet_functions\": [\n    {\n      \"name\": \":'ctrl::do_until'\",\n      \"file\": \"bolt-modules/ctrl/lib/puppet/functions/ctrl/do_until.rb\",\n      \"line\": 4,\n      \"type\": \"ruby4x\",\n      \"signatures\": [\n        {\n          \"signature\": \":'ctrl::do_until'(Callable &$block)\",\n          \"docstring\": {\n            \"text\": \"Repeat the block until it returns a truthy value. Returns the value.\",\n            \"tags\": [\n              {\n                \"tag_name\": \"example\",\n                \"text\": \"ctrl::do_until() || {\\n  run_task('test', $target, _catch_errors => true).ok?\\n}\",\n                \"name\": \"Run a task until it succeeds\"\n              },\n              {\n                \"tag_name\": \"param\",\n                \"text\": \"\",\n                \"types\": [\n                  \"Callable\"\n                ],\n                \"name\": \"&block\"\n              },\n              {\n                \"tag_name\": \"return\",\n                \"text\": \"\",\n                \"types\": [\n                  \"Any\"\n                ]\n              }\n            ]\n          }\n        }\n      ],\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32588", "fixedVersions": [], "id": "32588", "issueType": "Bug", "key": "PDOC-283", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "5ade3a9f91bc312e6a4a30f3", "resolution": "Fixed", "resolutionDate": "2019-07-09T17:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Yard gem 0.9.20 causes name spaced puppet functions to render wrong", "timeSpent": "PT0S", "updated": "2019-07-09T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-06-25T13:33:00.000000", "creator": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@70c943d0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzvdef:"}], "description": "The documentation for `puppet strings generate` states:\n{noformat}\n--out PATH                     - Write selected format to PATH. If no path is\n                                   designated, strings prints to STDOUT.{noformat}\nHowever when `\u2013format markdown` is specified, the output is written to REFERENCE.md rather than STDOUT and there appears to be no way to override that behavior through the CLI.\n\nI think the offending code is\u00a0[https://github.com/puppetlabs/puppet-strings/blob/master/lib/puppet-strings.rb#L39]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32570", "fixedVersions": [], "id": "32570", "issueType": "Bug", "key": "PDOC-282", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "No way to output markdown format to stdout", "timeSpent": "PT0S", "updated": "2019-06-25T13:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "This sounds more like a task for puppet-lint where it is possible to add \"auto corrections\".", "created": "2019-06-05T06:13:00.000000"}], "components": [], "created": "2019-06-05T03:45:00.000000", "creator": "623a4603761efb0069cd34da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@398970a2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzuykn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jun/19"}], "description": "Given the following scenario (which I think is quite common):\n\nA user already has a working module, but the puppet strings documentation is missing/documented in other format. It would be great if puppet-strings could automatically generate the necessary header block (`# @params $parameter`, ...) for the user which then only had to fill out the missing things.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32350", "fixedVersions": [], "id": "32350", "issueType": "New Feature", "key": "PDOC-281", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4603761efb0069cd34da", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add header autogeneration", "timeSpent": "PT0S", "updated": "2019-06-05T06:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4a827910a200718ac35d", "body": "I think this would be great, but I'd like to suggest that it flag puppet-strings warnings of any kind, not just coverage.", "created": "2019-06-05T05:16:00.000000"}], "components": [], "created": "2019-06-05T03:41:00.000000", "creator": "623a4603761efb0069cd34da", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@39f58b12"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzuyk7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jun/19"}], "description": "It would be great if puppet-strings would support a Rake task which checks for documentation converge. This would allow a CI jobs which verifies that all parameters are documented.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32587", "fixedVersions": [], "id": "32587", "issueType": "New Feature", "key": "PDOC-280", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4603761efb0069cd34da", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Rake Task for coverage", "timeSpent": "PT0S", "updated": "2019-06-05T05:16:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["DOCS"], "created": "2019-05-30T19:49:00.000000", "creator": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Users can find reliable, updated documentation that explains how to generate Puppet module documentation."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a5321d1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzuw07:"}, {"fieldName": "Zendesk Ticket Count", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "Zendesk Ticket IDs", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "35068"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "31/May/19"}], "description": "*Problem statement*\n\nFollowing the instructions at [https://puppet.com/docs/puppet/6.4/puppet_strings.html] does not result in a functional {{puppet strings}} command. Users following this documentation cannot use {{puppet strings}} to generate module documentation.\n\n*Expected result*\n\nEither following the documented installation instructions works, or if installing and invoking {{puppet strings}} directly is no longer recommended, we point users to PDK or whatever the preferred module docs generation method is now.\n\n*Observed result*\n\nFollowing these instructions on that page to install on a Puppet Inc.-provisioned Mojave MacBook Pro with Puppet agent 4.10.2:\n{quote} - If you don't have the yard gem installed yet, install it by running {{gem install yard}}\n - Install the puppet-strings gem by running {{gem install puppet-strings}}{quote}\nresults in Puppet being unable to locate the {{puppet agent}} command:\n{code}garrettottesmbp:Downloads gguillotte$ gem install yard\nFetching: yard-0.9.19.gem (100%)\n--------------------------------------------------------------------------------\nAs of YARD v0.9.2:\n\nRubyGems \"--document=yri,yard\" hooks are now supported. You can auto-configure\nYARD to automatically build the yri index for installed gems by typing:\n\n    $ yard config --gem-install-yri\n\nSee `yard config --help` for more information on RubyGems install hooks.\n\nYou can also add the following to your .gemspec to have YARD document your gem\non install:\n\n    spec.metadata[\"yard.run\"] = \"yri\" # use \"yard\" to build full HTML docs.\n\n--------------------------------------------------------------------------------\nSuccessfully installed yard-0.9.19\nParsing documentation for yard-0.9.19\nInstalling ri documentation for yard-0.9.19\nDone installing documentation for yard after 2 seconds\n1 gem installed\n\ngarrettottesmbp:Downloads gguillotte$ gem install puppet-strings\nFetching: rgen-0.8.2.gem (100%)\nSuccessfully installed rgen-0.8.2\nFetching: puppet-strings-2.2.0.gem (100%)\nSuccessfully installed puppet-strings-2.2.0\nParsing documentation for rgen-0.8.2\nInstalling ri documentation for rgen-0.8.2\nParsing documentation for puppet-strings-2.2.0\nInstalling ri documentation for puppet-strings-2.2.0\nDone installing documentation for rgen, puppet-strings after 2 seconds\n2 gems installed\n\ngarrettottesmbp:Downloads gguillotte$ puppet strings\nError: Unknown Puppet subcommand 'strings'\nSee 'puppet help' for help on available puppet subcommands\ngarrettottesmbp:Downloads gguillotte$ puppet-strings\n-bash: puppet-strings: command not found\n\ngarrettottesmbp:ntp gguillotte$ sudo puppet strings\nError: Unknown Puppet subcommand 'strings'\nSee 'puppet help' for help on available puppet subcommands\n{code}\nThe gem is installed to my rbenv home gem directory:\n{code}puppet-strings (2.2.0)\n    Author: Puppet Inc.\n    Homepage: https://github.com/puppetlabs/puppet-strings\n    License: Apache-2.0\n    Installed at: /Users/gguillotte/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0\n\n    Puppet documentation via YARD\n{code}\nbut the same behavior occurs without {{rbenv}}.\n\n*Workaround*\n\nInstalling the gem using Puppet's vendored binary as root works:\n{code}garrettottesmbp:ntp gguillotte$ sudo /opt/puppetlabs/puppet/bin/gem install puppet-strings\nPassword:\nFetching: yard-0.9.19.gem (100%)\n--------------------------------------------------------------------------------\nAs of YARD v0.9.2:\n\nRubyGems \"--document=yri,yard\" hooks are now supported. You can auto-configure\nYARD to automatically build the yri index for installed gems by typing:\n\n    $ yard config --gem-install-yri\n\nSee `yard config --help` for more information on RubyGems install hooks.\n\nYou can also add the following to your .gemspec to have YARD document your gem\non install:\n\n    spec.metadata[\"yard.run\"] = \"yri\" # use \"yard\" to build full HTML docs.\n\n--------------------------------------------------------------------------------\nSuccessfully installed yard-0.9.19\nFetching: rgen-0.8.2.gem (100%)\nSuccessfully installed rgen-0.8.2\nFetching: puppet-strings-2.2.0.gem (100%)\nSuccessfully installed puppet-strings-2.2.0\nParsing documentation for puppet-strings-2.2.0\nInstalling ri documentation for puppet-strings-2.2.0\nParsing documentation for rgen-0.8.2\nInstalling ri documentation for rgen-0.8.2\nParsing documentation for yard-0.9.19\nInstalling ri documentation for yard-0.9.19\nDone installing documentation for puppet-strings, rgen, yard after 16 seconds\n3 gems installed\n\ngarrettottesmbp:ntp gguillotte$ pwd\n/Users/gguillotte/.puppetlabs/etc/code/modules/ntp\n\ngarrettottesmbp:ntp gguillotte$ puppet strings\nFiles:                    4\nModules:                  0 (    0 undocumented)\nClasses:                  0 (    0 undocumented)\nConstants:                0 (    0 undocumented)\nAttributes:               0 (    0 undocumented)\nMethods:                  0 (    0 undocumented)\nPuppet Classes:           4 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:             0 (    0 undocumented)\nPuppet Providers:         0 (    0 undocumented)\nPuppet Functions:         0 (    0 undocumented)\nPuppet Tasks:             0 (    0 undocumented)\n 100.00% documented\n{code}\n*Suggested improvement*\n\nEither:\n * Strings developers help update the installation documentation. It's unclear which development team owns Strings now. PDOC and Strings are not listed as a Coremunity team project.\n\nor\n * The installation docs move back to the Strings GitHub repository so open source contributors can maintain them.\n\nor\n * The Strings docs are removed in favor of using PDK, and {{pdk build}} is both capable of building the module documentation and is documented as doing so.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32569", "fixedVersions": [], "id": "32569", "issueType": "Bug", "key": "PDOC-279", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "\"puppet strings\" command unavailable after following installation docs", "timeSpent": "PT0S", "updated": "2019-12-10T08:38:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-05-02T14:05:00.000000", "creator": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* Puppet code objects tagged with \"@api private\" are rendered appropriately in puppet-string's HTML format output."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6f1042b8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzude7:"}], "description": "[https://github.com/puppetlabs/puppet-strings/pull/157]\u00a0added basic support for the \"@api private\" tag to the Puppet code objects in puppet-strings and updated the markdown rendering templates to be aware of private code objects.\n\nHowever the HTML templates have not been updated accordingly, we should update those templates so that the generated HTML documentation indicates which Puppet code objects are private versus public.\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32586", "fixedVersions": [], "id": "32586", "issueType": "Improvement", "key": "PDOC-278", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Update HTML templates to reflect \"@api private\" resources", "timeSpent": "PT0S", "updated": "2019-05-02T14:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "The formatting in the example above has been fixed, but we are still seeing issues in generated docs. It's possible the issue here is in the docs tooling rather than in Strings. I'll investigate this as far as I can, but I may wind up looking for help on it.", "created": "2019-08-12T18:18:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Per 30 Aug 2019 meeting with [~accountid:557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116], this looks like an issue that might exist in the Docs' ERB template, not in Strings.", "created": "2019-08-30T15:17:00.000000"}], "components": ["DOCS"], "created": "2019-05-01T16:53:00.000000", "creator": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@13931a4d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzucov:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Aug/19"}], "description": "Follow up to PDOC-265\n\nFrom Henrik's comment on that issue:\n\nExamples in {{regsubst.rb}} (the 4.x implementation) looks like this:\n{code}# @example Get the third octet from the node's IP address:\n#\n# ```puppet\n# $i3 = regsubst($ipaddress,'^(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)$','\\\\3')\n# ```\n#\n# @example Put angle brackets around each octet in the node's IP address:\n#\n# ```puppet\n# $x = regsubst($ipaddress, /([0-9]+)/, '<\\\\1>', 'G')\n# ```\n{code}\nNote that the example body is one blank line away and not indented. Is that what is causing Puppet Strings to not pick it up? Or is it something else?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32447", "fixedVersions": [], "id": "32447", "issueType": "Bug", "key": "PDOC-277", "labels": ["generated-docs"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Ensure that multiline examples are correctly parsed", "timeSpent": "PT0S", "updated": "2019-08-30T15:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5caf5082c75c532928c11f7b", "body": "I see that this issue has been tagged as \"Needs Information\" by \"GreenHopper\".\n\nIf someone would tell me what information is needed, I shall endeavor to supply it.", "created": "2019-12-30T09:08:00.000000"}], "components": [], "created": "2019-05-01T14:21:00.000000", "creator": "5caf5082c75c532928c11f7b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52dfccd3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzuckn:"}], "description": "Puppet strings fails to capture complex default values:\n\n* {{$foo = $bar ? \\{'one' => 'special', default => 'normal'\\}}}\n   gets captured as:\n   {{Default value: $bar}}\n* {{$foo = $bar.regsubst(/\\A([a-z]+) ([0-9]+)\\z/, '&#92;&#92;1')}}\n  gets captured as\n  {{Default value: $bar}}\n* {{$foo = regsubst($bar, /\\A([a-z]+) ([0-9]+)\\z/, '&#92;&#92;2')}}\n  gets captured as\n  {{Default value: regsubst($bar, /\\A([a-z]+) \\z/, '&#92;&#92;2')}}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32412", "fixedVersions": [], "id": "32412", "issueType": "Bug", "key": "PDOC-276", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "5caf5082c75c532928c11f7b", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet strings fails with complex default values.", "timeSpent": "PT0S", "updated": "2019-12-30T09:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-04-17T06:31:00.000000", "creator": "557058:79a6b455-622c-4839-88ba-d3ee205f72b0", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32182eac"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzu2kf:"}], "description": "if you create a class as follows\n{code:puppet}# classname# @tag# class classname{code}\nWhen running `Puppet string generate` a [warn] message is generated.\u00a0\n\n[warn]: Missing documentation for Puppet class 'classname' at\u00a0\nmanifests/init.pp:linenumber.\nthe error message identifies the line number of the line with no comment or code, and declares it as undocumented\u00a0\n\nQuestion? does the line really matter at all? \nif so can the error be clearer 'remove or comment empty lines for reason x'\n\nif not can the error be quashed.\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32343", "fixedVersions": [], "id": "32343", "issueType": "Improvement", "key": "PDOC-275", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:79a6b455-622c-4839-88ba-d3ee205f72b0", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "As a end user, the error message for empty string line could be better", "timeSpent": "PT0S", "updated": "2019-04-17T06:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-02-21T06:50:00.000000", "creator": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76f619fe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsx13:"}], "description": "To make use of the new Resource API transport schema information, puppet-strings should read and render the information from {{register_transport}} to the REFERENCE.md.\n\nThe existing code for parsing {{register_type}} can be used as a template.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32568", "fixedVersions": [], "id": "32568", "issueType": "Improvement", "key": "PDOC-291", "labels": ["resource-api"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Build reference doc for transport schemas", "timeSpent": "PT0S", "updated": "2019-09-24T04:43:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "attachments": [], "comments": [{"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "Seems to have been addressed in https://github.com/puppetlabs/puppet-strings/pull/231", "created": "2021-01-18T03:04:00.000000"}], "components": ["DOCS"], "created": "2019-02-08T16:37:00.000000", "creator": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Add provider attribute to docs output.\u00a0 This parameter is a base part of all types.\u00a0 It does not show up in the documentation because it is defined in type.rb, instead of the individual type code files."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d21dd87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-301"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzsphb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Jan/21"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37759464983_*|*_3_*:*_1_*:*_23535735784_*|*_5_*:*_1_*:*_0"}], "description": "Add provider attribute to docs output", "epicLinkSummary": "Docs Process Improvements", "estimate": "PT0S", "externalId": "32348", "fixedVersions": [], "id": "32348", "issueType": "Bug", "key": "PDOC-274", "labels": ["generated-docs"], "originalEstimate": "PT0S", "parent": "32481", "parentSummary": "Docs Process Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "resolution": "Fixed", "resolutionDate": "2021-01-18T03:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add provider attribute to docs output", "timeSpent": "PT0S", "updated": "2021-01-18T03:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "attachments": [], "comments": [{"author": "557058:d266d245-5cba-4a99-842a-d1e061513459", "body": "An example of a module where parts of it get documented and others don't is [https://github.com/ploperations/ploperations-classification]\u00a0\n\nAn example of puppet strings providing zero help is [https://github.com/ploperations/ploperations-consul_data]\u00a0", "created": "2019-02-04T08:00:00.000000"}, {"author": "557058:d266d245-5cba-4a99-842a-d1e061513459", "body": "Pinging [~accountid:557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116]", "created": "2019-02-04T10:50:00.000000"}, {"author": "557058:d266d245-5cba-4a99-842a-d1e061513459", "body": "I have been updating the docs for another module and noticed that not all the tags listed in [https://puppet.com/docs/puppet/6.0/puppet_strings.html]\u00a0are actually picked up from ruby functions.\u00a0", "created": "2019-02-08T19:33:00.000000"}, {"author": "557058:d266d245-5cba-4a99-842a-d1e061513459", "body": "[~accountid:557058:8f1e0495-1d4a-4123-bbad-727b7f49f370] - I saw that you made a small edit on this and was curious where it sat on the priority list.", "created": "2019-09-06T13:11:00.000000"}, {"author": "557058:8f1e0495-1d4a-4123-bbad-727b7f49f370", "body": "Hi [~accountid:557058:d266d245-5cba-4a99-842a-d1e061513459], we removed this from our active sprint because it's not currently being worked on, and right now we're focusing our efforts on higher priority bugs and features. Kris will update the ticket when he's actively working on it again.", "created": "2019-09-06T14:50:00.000000"}, {"author": "557058:d266d245-5cba-4a99-842a-d1e061513459", "body": "Thanks for the info [~accountid:557058:8f1e0495-1d4a-4123-bbad-727b7f49f370]!", "created": "2019-09-06T14:51:00.000000"}], "components": [], "created": "2019-02-04T07:59:00.000000", "creator": "557058:d266d245-5cba-4a99-842a-d1e061513459", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36c5d99f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzskb3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Sep/19"}], "description": "As a module author I write my documentation in a format compatible with puppet strings. I expect that when I run puppet strings generate that all that documentation will end up in REFERENCE.md however none of the docs that I write on the ruby files in the lib folder are processed. The end result of this is a need to manually document part of my module while having the rest of the docs auto-generated.\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32551", "fixedVersions": [], "id": "32551", "issueType": "Bug", "key": "PDOC-273", "labels": ["customer0"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:d266d245-5cba-4a99-842a-d1e061513459", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "puppet-strings should pull documentation from the lib folder too", "timeSpent": "PT0S", "updated": "2020-01-21T23:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "attachments": [], "comments": [], "components": [], "created": "2019-01-11T16:57:00.000000", "creator": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "\"puppet describe user\" includes these Requires Features results which are not in \"puppet strings describe user\":\n\nRequires features manages_aix_lam.\nRequires features manages_solaris_rbac.\n Requires features manages_expiry.\n Requires features libuser.\n Requires features manages_aix_lam.\n... etc\n\nThese come from param and property declarations such as:\n\nlib/puppet/type/user.rb:616: newparam(:ia_load_module, :required_features => :manages_aix_lam)\nlib/puppet/type/user.rb:620: newproperty(:attributes, :parent => Puppet::Property::KeyValue, :required_features => :manages_aix_lam)\n\nThese results should be parsed by puppet strings and added to puppet strings describe output.\n\n\u00a0"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a5f74b2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-301"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl26f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Enhancement"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "puppet strings describe will now include information on Required features."}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2915736742_*|*_10007_*:*_1_*:*_5347546005_*|*_3_*:*_1_*:*_437861812_*|*_5_*:*_1_*:*_0"}], "description": "Parse required_feature attributes and add to strings describe", "epicLinkSummary": "Docs Process Improvements", "estimate": "PT0S", "externalId": "32521", "fixedVersions": [], "id": "32521", "issueType": "Improvement", "key": "PDOC-272", "labels": [], "originalEstimate": "PT0S", "parent": "32481", "parentSummary": "Docs Process Improvements", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "resolution": "Fixed", "resolutionDate": "2019-04-22T10:56:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Parse required_feature attributes and add to strings describe", "timeSpent": "PT0S", "updated": "2019-04-22T10:56:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2019-01-10T15:04:00.000000", "creator": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Developer Experience"}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Goal: Replace outdated docs process with more modern tools.\n\nMitigate or Eliminate extra docs team effort.\n\nRemove unmaintainable code.\n\nCurrently the best tool for managing data related to docs is puppet strings\n\nFacter doc generation is a separate process.\n\nSome known issues to solve:\n # required_features is not included in string output (now in PUP-9451)\n # supported features? missing\n # Some properties are copied from old output to new (strings) output - are they still needed?\n ## In some cases, these are edits for clarity, which may not translate well into tooling.\n ## (actually, no known formatting issues - heredocs should have markdown syntax for formatting)\n ## 'provider' attribute missing - is this just no longer in Puppet 6\n\nQuestions for Jean:\n\n1. Do you have any tool flow issues, e.g. confusing or difficult setup, inconvenient requirements, bad caching?"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c893fdc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Docs Process Improvements"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzs41j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_58630220151_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_39292784393"}], "description": "Docs Process improvements", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32481", "fixedVersions": [], "id": "32481", "issueType": "Epic", "key": "PDOC-301", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "resolution": "Done", "resolutionDate": "2022-02-16T23:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Docs Process Improvements", "timeSpent": "PT0S", "updated": "2022-02-16T23:54:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c11ebee1b5a0070293512", "created": "2018-12-06T12:06:00.000000", "name": "puppet_example.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12383"}], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Sorry for the delayed response, but this appears to be an issue in the underlying YARD gem's ability to detect documentation tags that include non-standard whitespace characters. I would suggest following up with https://github.com/lsegal/yard if this continues to be an issue for you.\n\nPlease feel free to re-open this issue if you are sure it is a problem specific to puppet-strings.\n\nThanks!", "created": "2019-06-11T17:59:00.000000"}], "components": ["CLI"], "created": "2018-12-06T12:05:00.000000", "creator": "623c11ebee1b5a0070293512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@58c07d5d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzrjk7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_16174424525_*|*_6_*:*_1_*:*_0"}], "description": "[~accountid:623c100c4a57610068e74585] noticed that [https://github.com/voxpupuli/puppet-rabbitmq/blob/24abdd6b9934167d10f7ebc30fbc07cd654e6f81/manifests/init.pp#L192] had an odd unicode character that renders as a space for me (even with {{cat -vet}}) ([https://github.com/voxpupuli/puppet-rabbitmq/pull/744#issuecomment-444942295] )\n\nThis seemed to be causing other weird spacing / rendering as well\n\nod -c shows\n{noformat}\n0026020    a   d   m   i   n       f   i   l   e  \\n   #      **   @   p\n0026040    a   r   a   m       l   o   o   p   b   a   c   k   _   u   s\n0026060    e   r   s       T   h   i   s       o   p   t   i   o   n    \n {noformat}\nAttached is a pretty self contained repo case, tho haven't been able to replicate the case (probably can be replicated with above config) where some examples don't get rendered. If you add a \"# foo\" at the top, you'll see the missing docs line end up there.\n\u00a0\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32478", "fixedVersions": [], "id": "32478", "issueType": "Bug", "key": "PDOC-271", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c11ebee1b5a0070293512", "resolution": "Won't Do", "resolutionDate": "2019-06-11T17:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "unicode space causes oddly formatted output / missing text", "timeSpent": "PT0S", "updated": "2019-06-11T17:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["CLI"], "created": "2018-10-24T08:27:00.000000", "creator": "623c12399b54ec0068b143b3", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48eda4c0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqr5z:"}], "description": "It should be possible to use parameters provided by the `yard server` command also with the `puppet strings server` command.\n\n\u00a0For example the --bind and the --port option to allow binding to different addresses and ports.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32550", "fixedVersions": [], "id": "32550", "issueType": "New Feature", "key": "PDOC-270", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c12399b54ec0068b143b3", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Allow yard-server cli options to be passed to puppet-strings-server", "timeSpent": "PT0S", "updated": "2019-06-11T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "This is an interesting idea, can you give us some examples of what type of code you are documenting where this would be useful? Is it that you just want more granularity than is expressed in the metadata.json dependencies of a module or are you using this to document role and profile code?", "created": "2019-06-11T17:50:00.000000"}], "components": [], "created": "2018-10-18T02:54:00.000000", "creator": "62439c7ba629c30068a3ea28", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38fdf6e0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzqmpj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jun/19"}], "description": "It would be great if there was a tag to document forge modules that are used by the current class or type.\n\nI'd suggest a @uses-module:\n{code:java}\n# @uses puppetlabs-stdlib {code}\nThis would render a link to the forge site of the puppetlabs-stdlib module.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32567", "fixedVersions": [], "id": "32567", "issueType": "New Feature", "key": "PDOC-269", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62439c7ba629c30068a3ea28", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Support documenting required modules", "timeSpent": "PT0S", "updated": "2019-06-11T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Looks like we need to make the Table of Contents anchors use the same disambiguation algorithm as the Forge does for multiple headings with the same text value. We should also investigate if there is a standard for this so we can safely predict what the anchor values will be ahead of time.", "created": "2019-06-11T17:45:00.000000"}, {"author": "63d2e1780d930a766df1296b", "body": "I fixed this in Puppet Strings: [PR #303|https://github.com/puppetlabs/puppet-strings/pull/303] ([Issue #300|https://github.com/puppetlabs/puppet-strings/issues/300]). See the PR for a description of the change (pasting it here doesn\u2019t work well), or look at these two changes: [param link|https://github.com/puppetlabs/puppet-strings/pull/303/files#diff-d839a9e39b18a1d882ec8ee5ca04eef5059d855e29cedde26073615aef6a3090R99], [fragment normalization|https://github.com/puppetlabs/puppet-strings/pull/303/files#diff-d839a9e39b18a1d882ec8ee5ca04eef5059d855e29cedde26073615aef6a3090R203-R213]\n\nUnfortunately, it appears that Forge strips the\u00a0{{<a name=\"...\"></a>}} elements out of the generated documentation, so they are still broken there. For example, https://forge.puppet.com/modules/dp/golang/reference#golang\u2013from_tarball\n\nWould you like me to file a new ticket for that? It\u2019s arguably a separate issue.", "created": "2022-10-04T20:57:00.000000"}], "components": [], "created": "2018-10-17T04:07:00.000000", "creator": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a7adf1b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt6n:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jun/19"}], "description": "When different elements have parameters with the same name, the internal anchors can collide. This means, for example, that the documentation on the Forge provides links that go to the wrong place.\n\nExample: Load the [puppetlabs/mysql|https://forge.puppet.com/puppetlabs/mysql/reference] reference page. Scroll down to see the [{{sql}} task|https://forge.puppet.com/puppetlabs/mysql/reference#sql] entry in the table of contents and click it. Observe that you're now looking at the {{sql}} parameter of the {{mysql::db}} defined type.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32379", "fixedVersions": [], "id": "32379", "issueType": "Bug", "key": "PDOC-268", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Colliding internal anchors on autogenerated pages", "timeSpent": "PT0S", "updated": "2022-10-04T20:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "[~accountid:623c100c4a57610068e74585] sorry for the delay in responding to this request! Could you confirm if this is still something you would find useful and if so, provide a concrete example of some code that makes use of a parameter grouping syntax?\n\nIf this is something that would require extensive customization to YARD, we probably won't have the bandwidth to address it any time soon, but given an example we might be able to come up with something that would work for you.\n\nThanks!", "created": "2019-05-28T17:04:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Yes, this is still an important use case for us.\n\nI have played around a bit, but couldn't find an easy way to implement it.", "created": "2019-05-29T02:03:00.000000"}], "components": [], "created": "2018-09-13T16:16:00.000000", "creator": "623c100c4a57610068e74585", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@26bf1404"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpv2f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/May/19"}], "description": "Currently we have a [kafo_parsers gem|https://github.com/theforeman/kafo_parsers] that also has RDoc support. RDoc has the option to group parameters. In our installer we use this to hide advanced groups with --help but do show them with --full-help. I would like to fully move to puppet-strings so we can drop our RDoc backend but then we need such a feature.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32566", "fixedVersions": [], "id": "32566", "issueType": "New Feature", "key": "PDOC-267", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c100c4a57610068e74585", "status": "Needs Information", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Grouping of parameters", "timeSpent": "PT0S", "updated": "2020-06-03T12:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "[~accountid:623a4a827910a200718ac35d], how big is the impact here? Is this only annoying, or does it break doc generation? If the latter, how hard?", "created": "2018-09-17T02:33:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "It breaks doc generation for the type containing title_patterns - nothing is generated. The other types generate okay.\n\nIn order to try to ensure comprehensive documentation on everything that we release we do default our pipeline to prohibiting anything though where Strings reports any warnings or any missing coverage (classes, parameters, etc.), but we also have a toggle to enable docs with failures to continue though so I can work around that.\n\nI did fiddle around with Strings enough to get a patch that has it continue without any warning, but I wasn't sure if it was a valid approach or not so I stopped working on it.", "created": "2018-09-17T05:01:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "I'm glad it's not a \"everything on fire\" situation. That said, it should definitely not swallow the docs for types using title_patterns. Can you post the patch somewhere, even if we don't think it'll be the right solution. It's at least a pointer to the offending code :-)\n", "created": "2018-09-17T05:08:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "Sure, here it is: [https://github.com/seanmil/puppet-strings/commit/c0165422d677d0f861d6e889e3cc27f8cb109978]\n\n\u00a0", "created": "2018-09-17T05:48:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "That looks like a sensible approach to solve this. Anything speaking against getting that merged right now?", "created": "2018-09-17T06:24:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "No reason I have. Here is a PR: [https://github.com/puppetlabs/puppet-strings/pull/189]\n\n\u00a0", "created": "2018-09-17T06:32:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "Thanks!", "created": "2018-09-24T04:13:00.000000"}], "components": [], "created": "2018-09-12T15:26:00.000000", "creator": "623a4a827910a200718ac35d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet Strings should correctly handle (or at least not throw a warning on) the use of title_patterns in a Resource API type."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f75293b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDK-525"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpu67:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_996423413_*|*_5_*:*_1_*:*_0"}], "description": "\u00a0\n\nWhen running Puppet Strings against a type/provider that uses the `title_parameters` option in the Resource API I get this message:\n\n[warn]: in PuppetStrings::Yard::Handlers::Ruby::RsapiHandler: Undocumentable unexpected construct regexp_literal at lib/puppet/type/mytype.rb:5\n\nI've narrowed it down to not liking the `title_patterns` parameter and, in particular, the regex value in it.", "epicLinkSummary": "Resource API Backlog", "estimate": "PT0S", "externalId": "32446", "fixedVersions": [], "id": "32446", "issueType": "Bug", "key": "PDOC-266", "labels": [], "originalEstimate": "PT0S", "parent": "31265", "parentSummary": "Resource API Backlog", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4a827910a200718ac35d", "resolution": "Fixed", "resolutionDate": "2018-09-24T04:13:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Getting \"unexpected construct regexp_literal\" when using resource API title_patterns", "timeSpent": "PT0S", "updated": "2018-09-24T04:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "Affects-version should be 2.1.0, but that wasn't available in the dropdown.", "created": "2018-09-07T09:47:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Have you tried placing the @example above the @param ? (not sure it helps, but just a thought).\n\nThis needs to be fixed - we were looking at the output for the {{regsubst}} function in puppet, and documentation for it is not coming out right either (it has @example tags as well)", "created": "2018-09-07T14:44:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] I have now, and it didn't make any difference.", "created": "2018-09-08T04:16:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:054fa98a-5e29-48e7-aeca-d5542926f8ba] Thanks for testing.", "created": "2018-09-08T10:19:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "Yes, the {{regsubst}} [docs on the docs site|https://puppet.com/docs/puppet/6.4/function.html#regsubst] are in pretty poor state. What do we need to do to prioritize fixing this?\n\nCompare that to the [same listing for 5.3|https://puppet.com/docs/puppet/5.3/function.html#regsubst].", "created": "2019-04-05T16:55:00.000000"}, {"author": "557058:745e5b4d-58ed-48ed-8daa-afe8b66453a1", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] do you have any status on the strings work?", "created": "2019-04-05T17:00:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "This is fixed in the recently released puppet strings 2.2\n\n[https://github.com/puppetlabs/puppet-strings/pull/188]\n\nI'm interested to see how the core function documentation is affected.\u00a0 I think the problem will be that because puppet-strings was missing the functionality, people have been trying their best to work around the limitations.\n\neg.\n\n[https://github.com/puppetlabs/puppet/blob/80e14013537dd238862cb0d97db5952e840f0f48/lib/puppet/functions/regsubst.rb#L29-L40]", "created": "2019-04-07T10:37:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "I'm hoping this recent release fixes the function issue in the core function docs. I'm assigning myself to this ticket for testing.", "created": "2019-04-09T14:17:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "This does not appear to have fixed the issue with core docs generation. It may be a Strings thing or it may be an issue with the docs scripts.\n\nThe function in Puppet code contains a lot of comment text that is seen in the 5.3 example ([https://puppet.com/docs/puppet/5.3/function.html#regsubst]) but is not showing up in the 6.4 generated docs ([https://puppet.com/docs/puppet/6.4/function.html#regsubst]). This includes, but is not limited to, the descriptions of the examples.\n\nWhen I generate docs, I get two files for functions:\n * function_strings_prefer_v3.md: this contains the comment text and @example descriptions from the function.\n * function_strings_prefer_v4.md: this... doesn't.\n\nIt's the function_strings_prefer_v4.md file that becomes functions.html. I'm a little vague on what the difference is between the two files (Puppet 3 vs Puppet 4, I imagine?) because I'm still learning about how the generated docs work. Anyway, pinging [~accountid:557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116], as he's been helping recently on working out some of the bugs with generated docs.\n\n\u00a0\n\neta: I'm also unassigning myself for the time being, because there's eng work that needs to be done here.", "created": "2019-04-11T14:32:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Examples in {{regsubst.rb}} (the 4.x implementation) looks like this:\n{code}\n# @example Get the third octet from the node's IP address:\n#\n# ```puppet\n# $i3 = regsubst($ipaddress,'^(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)$','\\\\3')\n# ```\n#\n# @example Put angle brackets around each octet in the node's IP address:\n#\n# ```puppet\n# $x = regsubst($ipaddress, /([0-9]+)/, '<\\\\1>', 'G')\n# ```\n{code}\n\nNote that the example body is one blank line away and not indented. Is that what is causing Puppet Strings to not pick it up? Or is it something else?\n", "created": "2019-04-12T02:57:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Good catch, [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], that might be part of the issue. I've PR'd a fix to that.\n\nThere's still a lot of other descriptive text not getting picked up, but maybe this will fix the example issue.", "created": "2019-04-12T10:48:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] It sounds like maybe the original issue (that puppet-strings didn't recognize the @example tag at all for 4.x style functions) has been fixed but there may still be a bug in how it's able to capture example content that contains blank lines? If that's the case can we open a new ticket specifically about that issue and close this one?", "created": "2019-05-01T15:23:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "[~accountid:557058:ad2090d1-8a61-4530-9228-7d89570c23b7], yes, I think that sounds like the right move to me.", "created": "2019-05-01T15:30:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Original issue has been resolved, PDOC-277 has been opened to track the subsequent issues.", "created": "2019-05-01T16:53:00.000000"}], "components": [], "created": "2018-09-07T08:22:00.000000", "creator": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b095284"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzpr1r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Sep/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18510896106_*|*_10009_*:*_1_*:*_1663479426_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_173794782_*|*_10006_*:*_1_*:*_72891068"}], "description": "The [style guide|https://puppet.com/docs/puppet/5.5/puppet_strings_style.html#ruby-function-examples] shows you how you're supposed to use puppet-strings with 4.x functions.\n\n{noformat}\n# An example 4.x function.\nPuppet::Functions.create_function(:example) do\n  # @param first The first parameter.\n  # @param second The second parameter.\n  # @return [String] Returns a string.\n  # @example Calling the function\n  #   example('hi', 10)\n  dispatch :example do\n    param 'String', :first\n    param 'Integer', :second\n  end\n\n  # ...\nend\n{noformat}\n\nI've tried the example above and multiple other ways of specifying the examples tag, but haven't yet been able to get anything output in either html or markdown docs.  It would be great if I could document multiple examples (which works with classes), but at a minimum being able to specify just one would be nice.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32519", "fixedVersions": [], "id": "32519", "issueType": "Bug", "key": "PDOC-265", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "resolution": "Fixed", "resolutionDate": "2019-05-01T16:53:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "@example doesn't work with 4.x functions", "timeSpent": "PT0S", "updated": "2019-05-28T16:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["CLI"], "created": "2018-08-29T17:07:00.000000", "creator": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2ee5a621"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-98"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt6f:"}], "description": "When puppet strings throws errors, it does so on stdout instead of stderr. If you use `--format json`, then this breaks the json object. ", "environment": "Run `puppet strings generate --format json` in puppetlabs/postgresql version 5.8.0 and look at the first two lines returned, they are not json, but errors. \n", "epicLinkSummary": "Puppet Strings Maintenance", "estimate": "PT0S", "externalId": "32378", "fixedVersions": [], "id": "32378", "issueType": "Bug", "key": "PDOC-264", "labels": [], "originalEstimate": "PT0S", "parent": "32541", "parentSummary": "Puppet Strings Maintenance", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Errors output on stdout, not stderr", "timeSpent": "PT0S", "updated": "2019-08-06T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:724f8532-144f-4a06-830b-a614714244e4", "created": "2018-08-28T21:13:00.000000", "name": "REFERENCE.md", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12382"}, {"attacher": "557058:724f8532-144f-4a06-830b-a614714244e4", "created": "2018-08-28T21:11:00.000000", "name": "Screenshot_2018-08-29_13-10-41.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12385"}, {"attacher": "557058:724f8532-144f-4a06-830b-a614714244e4", "created": "2018-08-28T23:20:00.000000", "name": "Screenshot_2018-08-29_15-16-36.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12396"}, {"attacher": "557058:724f8532-144f-4a06-830b-a614714244e4", "created": "2018-08-28T21:14:00.000000", "name": "includable.rb", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12376"}, {"attacher": "557058:724f8532-144f-4a06-830b-a614714244e4", "created": "2018-08-28T23:20:00.000000", "name": "includable2.rb", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12373"}], "comments": [{"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "I've noticed examples doesn't render too. See\u00a0https://github.com/voxpupuli/puppet-extlib/pull/108", "created": "2018-09-02T10:40:00.000000"}, {"author": "557058:054fa98a-5e29-48e7-aeca-d5542926f8ba", "body": "I've also found issues with using multiple `@return` tags.  Is it worth creating separate issues, or maybe sub-tasks on this ticket?", "created": "2018-09-02T12:54:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:557058:054fa98a-5e29-48e7-aeca-d5542926f8ba] [~accountid:557058:724f8532-144f-4a06-830b-a614714244e4],\n\nI'm unfortunately not actively working on Strings anymore. I would definitely say the more granular the tickets, the better, Alex. I'll see if I can get these issues in front of someone.", "created": "2018-09-04T09:24:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "There are several issued addressed in this ticket:\n\n* Examples not working has been addressed in PDOC-265\n* Duplicated text is also raised in PDOC-287 and seems to affect functions with a single dispatch call.\n* I couldn't find any place where the docs said not to use @summary ", "created": "2019-08-30T15:13:00.000000"}], "components": [], "created": "2018-08-28T23:33:00.000000", "creator": "557058:724f8532-144f-4a06-830b-a614714244e4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@243d28c1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-98"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt67:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Sep/18"}], "description": "*Puppet Strings version: puppet-strings (2.1.0) GIT*\n\n*Overview*\nRunning puppet strings against a ruby function seems to produce some strange outputs:\n\n*Doubled-up text*\nDescriptive text placed at the top of the file will be duplicated.\n\nSource: includable.rb\n !Screenshot_2018-08-29_13-10-41.png|thumbnail! \n\n*Missing examples*\nIn all cases, rich examples are lost.\n \n*Lost text*\nRe-positioning to look more like the example at https://puppet.com/docs/puppet/5.5/puppet_strings_style.html#ruby-function-examples results in the text not appearing in the output any more:\nSource: includable2.rb\n !Screenshot_2018-08-29_15-16-36.png|thumbnail! \n\n*@summary fixes TOC formatting*\n@summary seems to work nicely even though the docs say not to use it\n\n*Desired outcome*\nWould like to be able to include rich examples in function definitions along with descriptive text", "epicLinkSummary": "Puppet Strings Maintenance", "estimate": "PT0S", "externalId": "32377", "fixedVersions": [], "id": "32377", "issueType": "Bug", "key": "PDOC-263", "labels": [], "originalEstimate": "PT0S", "parent": "32541", "parentSummary": "Puppet Strings Maintenance", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:724f8532-144f-4a06-830b-a614714244e4", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet strings output duplicated on ruby functions", "timeSpent": "PT0S", "updated": "2019-08-30T15:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "CC [~accountid:63d40628f6e1b543161789a7] [~accountid:557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116] [~accountid:5a15cc24b87a44359db09635]", "created": "2018-08-06T12:42:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "CC [~accountid:557058:4b02db91-705f-4691-a56a-9a839ecbce6e] [~accountid:557058:43c81f8c-ae3f-46d9-84b0-c9c65e1da709]", "created": "2018-08-07T18:19:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Going to create an epic and break this down into smaller individual tickets", "created": "2019-05-28T16:20:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Adding another issue here so that it's not lost before this ticket gets broken down:\n\nSlack discussion: [https://puppetcommunity.slack.com/archives/C0W298S9G/p1559694938039700]\n\n\u00a0\n\nfile resource parameters listed at the top of the file.md page:\n{code:java}\nfile { 'resource title':\n  path                    => # (namevar) The path to the file to manage.  Must be fully...\n  ensure                  => # Whether the file should exist, and if so what...\n  backup                  => # Whether (and how) file content should be backed...\n  checksum                => # The checksum type to use when determining...\n  checksum_value          => # The checksum of the source contents. Only md5...\n  content                 => # The desired contents of a file, as a string...\n  ctime                   => # A read-only state to check the file ctime. On...\n  force                   => # Perform the file operation even if it will...\n  group                   => # Which group should own the file.  Argument can...\n  ignore                  => # A parameter which omits action on files matching \n  links                   => # How to handle links during file actions.  During \n  mode                    => # The desired permissions mode for the file, in...\n  mtime                   => # A read-only state to check the file mtime. On...\n  owner                   => # The user to whom the file should belong....\n  provider                => # The specific backend to use for this `file...\n  purge                   => # Whether unmanaged files should be purged. This...\n  recurse                 => # Whether to recursively manage the _contents_ of...\n  recurselimit            => # How far Puppet should descend into...\n  replace                 => # Whether to replace a file or symlink that...\n  selinux_ignore_defaults => # If this is set then Puppet will not ask SELinux...\n  selrange                => # What the SELinux range component of the context...\n  selrole                 => # What the SELinux role component of the context...\n  seltype                 => # What the SELinux type component of the context...\n  seluser                 => # What the SELinux user component of the context...\n  show_diff               => # Whether to display differences when the file...\n  source                  => # A source file, which will be copied into place...\n  source_permissions      => # Whether (and how) Puppet should copy owner...\n  sourceselect            => # Whether to copy all valid sources, or just the...\n  target                  => # The target for creating a link.  Currently...\n  type                    => # A read-only state to check the file...\n  validate_cmd            => # A command for validating the file's syntax...\n  validate_replacement    => # The replacement string in a `validate_cmd` that...\n  # ...plus any applicable metaparameters{code}\n\nfile resource parameters listed at the top of the file.md page based on Strings output:\n\n{code}file { 'resource title':\n  path                 => # (namevar) The path to the file to manage.  Must be fully...\n  backup               => # Whether (and how) file content should be backed...\n  force                => # Perform the file operation even if it will...\n  ignore               => # A parameter which omits action on files matching \n  links                => # How to handle links during file actions.  During \n  purge                => # Whether unmanaged files should be purged. This...\n  recurse              => # Whether to recursively manage the _contents_ of...\n  recurselimit         => # How far Puppet should descend into...\n  replace              => # Whether to replace a file or symlink that...\n  show_diff            => # Whether to display differences when the file...\n  sourceselect         => # Whether to copy all valid sources, or just the...\n  validate_cmd         => # A command for validating the file's syntax...\n  validate_replacement => # The replacement string in a `validate_cmd` that...\n  # ...plus any applicable metaparameters.{code}\n\nThe missing parameters are missing from both the code block and the listings/descriptions below the code block.\n", "created": "2019-06-05T14:37:00.000000"}, {"author": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "body": "Thanks [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79], this is noted in the ticket description (and also affects exec):\n\n{quote}\nApparent cause: Strings does not include attributes defined externally of the main type file. In other words, only the attributes defined in lib/puppet/type/file.rb are output by Strings, and Strings outputs none of the attributes defined in lib/puppet/type/file/*.\n{quote}\n\nThe missing file attributes are also detailed in DOC-3545, and the missing exec attributes are detailed in DOCUMENT-847.", "created": "2019-06-05T17:41:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "I converted this to an Epic, next I'm going to start going through and extracting the various bits into their own tickets.", "created": "2019-06-12T18:24:00.000000"}], "components": ["DOCS"], "created": "2018-08-06T12:35:00.000000", "creator": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@559edc95"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "puppet strings vs. docs"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "In Progress"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzopjr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/May/19"}], "description": "*Puppet Version:* 5.5.3\n *Puppet Server Version:* N/A\n *OS Name/Version:* N/A\n\nWhen generating resource type docs content from Puppet code with Puppet Strings, there are several formatting issues, some unique to certain types and others consistent across all types. These might not be relevant in Platform 6 when many of these types are moved to modules, but they currently require manual reconciliation when compiling reference docs for Platform 5.\n\n*All Strings output in types*\n * The {{puppet doc}} output lists providers, but the Strings docs do not. For example, this is included in the doc output for the zfs type, but omitted from the Strings output:\n\n{code}<h4 id=\"zfs-attribute-provider\">provider</h4>\n\nThe specific backend to use for this `zfs`\nresource. You will seldom need to specify this --- Puppet will usually\ndiscover the appropriate provider for your platform.\n\nAvailable providers are:\n\n* [`zfs`](#zfs-provider-zfs)\n{code} * The {{puppet doc}} output lists supported or required features, but the Strings output does not. For example, this appears in the {{puppet doc}} output for the service type's enable attribute, but not in the Strings output:\n\n{code}Requires features enableable.\n{code}\nThis occurs despite the required feature being listed in the type:\n{code}    newproperty(:enable, :required_features => :enableable) do\n{code}\nand features have their own description strings, which aren't output:\n{code}    feature :enableable, \"The provider can enable and disable the service\",\n{code} * Defaults in the Strings output are formatted unintuitively, as:\n{code}* Default for: `[\"osfamily\", \"solaris\"] == `\n{code}\nThe {{puppet doc}} output instead generates:\n{code}* Default for `osfamily` == `solaris`.\n{code}\n\n * Neither the doc nor Strings output recognizes when multiple allowed values function identically and should ideally be listed together, such as {{true}} and {{yes}} or {{false}} and {{no}} in types using {{Puppet::Parameter::Boolean}}.\n\n * The provider support table generated at the end of several types is inconsistent between the {{puppet doc}} and Strings output. Specifically, the number of rows per column is inconsistent, and some providers are listed as supported or unsupported differently in each. One especially notable discrepancy is in the mcx type, where the only listed provider (mcxcontent) is listed as supported in the {{puppet doc}} output and as unsupported in the Strings output.\n\n*Issues with specific types:*\n\n*exec, file*\n\nSymptom: Many attributes are missing.\n\nApparent cause: Strings does not include attributes defined externally of the main type file. In other words, only the attributes defined in {{lib/puppet/type/file.rb}} are output by Strings, and Strings outputs none of the attributes defined in {{lib/puppet/type/file/*}}.\n\n*filebucket*\n\nSymptom: The port attribute has no description in the Puppet Strings output, despite having a description in the type:\n{code}    newparam(:port) do\n      desc \"The port on which the remote server is listening. Defaults to the\n        value of the `masterport` setting, which is usually %s.\" % Puppet[:masterport]\n\n      defaultto { Puppet[:masterport] }\n{code}\nApparent cause: Unknown, but this might be a unique description that attempts to pass a string value ({{Puppet[:masterport]}}) back into the description.\n\n*yumrepo*\n\nSymptom: The {{ABSENT_DOC}} and {{YUM_BOOLEAN}} strings are not rendered, so \"Set this to `absent` to remove it from the file completely.\" appears in the puppet doc output but not in the Strings output, while the regex representing that Boolean expression instead appears in the Strings output as the word \"YUM_BOOLEAN\".\n\nApparent cause: Puppet Strings does not parse these variables, resulting in missing or incorrect output.\n\n*zone*\n\nSymptom: The {{sysidcfg}} attribute description's output includes the %\\{ ... }% brackets in the code.\n\nApparent cause: {{desc}} strings in types are inconsistently wrapped in double quotes, single quotes, heredoc ({{<<-EOT ... EOT}}) and different types of brackets (such as %q\\{ ... }). {{zone}} is the only type using %\\{ ... }% brackets.\n\n*zpool*\n\nSymptom: Quote-escaping backslashes are visible in the Strings output, but not the {{puppet doc}} output. For example, the raidz attribute in {{puppet doc}} output includes the example:\n{code}raidz => [\"disk1 disk2\", \"disk3 disk4\"],\n{code}\nThe same example rendered by Puppet Strings is:\n{code}raidz => [\\\"disk1 disk2\\\", \\\"disk3 disk4\\\"],\n{code}\nApparent cause: Puppet Strings doesn't necessarily require quotes to be escaped with backslashes.\n\n*Steps to reproduce*\n # Clone the puppetlabs/puppet-docs repository.\n # Generate references from the top level of the repository by running\n{noformat}bundle exec rake references:puppet VERSION=5.5.3{noformat}\n # Compare the resulting type and type_strings output.\n\nDetails and prerequisites for generating reference output is in\u00a0[Confluence|https://confluence.puppetlabs.com/display/DOCS/Generating+References] or in the puppet-docs repository.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32565", "fixedVersions": [], "id": "32565", "issueType": "Epic", "key": "PDOC-262", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:836ef76e-8051-48a3-8dc7-005f79695b0e", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings output of Puppet types is inconsistent with puppet doc", "timeSpent": "PT0S", "updated": "2021-06-29T09:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-07-19T11:23:00.000000", "creator": "623c09d27910a200718b903c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3aac302b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-98"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt5z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/May/19"}], "description": "When running\u00a0\"puppet strings generate\" on the \"1.8.1\" version of the \"puppetlabs-firewall\" module (https://forge.puppet.com/puppetlabs/firewall), the process errors as shown below (return code is 1).\n\n\n{noformat}\n$ puppet strings generate\n[warn]: Missing @param tag for parameter 'ensure' near manifests/init.pp:14.\n[warn]: Missing @param tag for parameter 'pkg_ensure' near manifests/init.pp:14.\n[warn]: Missing @param tag for parameter 'service_name' near manifests/init.pp:14.\n[warn]: Missing @param tag for parameter 'package_name' near manifests/init.pp:14.\n[warn]: Missing @param tag for parameter 'ensure' near manifests/linux.pp:14.\n[warn]: Missing @param tag for parameter 'pkg_ensure' near manifests/linux.pp:14.\n[warn]: Missing @param tag for parameter 'service_name' near manifests/linux.pp:14.\n[warn]: Missing @param tag for parameter 'package_name' near manifests/linux.pp:14.\n[warn]: Missing documentation for Puppet class 'firewall::params' at manifests/params.pp:1.\n[warn]: Missing @param tag for parameter 'ensure' near manifests/linux/debian.pp:16.\n[warn]: Missing @param tag for parameter 'enable' near manifests/linux/debian.pp:16.\n[warn]: Missing @param tag for parameter 'service_name' near manifests/linux/debian.pp:16.\n[warn]: Missing @param tag for parameter 'package_name' near manifests/linux/debian.pp:16.\n[warn]: Missing @param tag for parameter 'package_ensure' near manifests/linux/debian.pp:16.\n[warn]: Missing @param tag for parameter 'ensure' near manifests/linux/gentoo.pp:16.\n[warn]: Missing @param tag for parameter 'enable' near manifests/linux/gentoo.pp:16.\n[warn]: Missing @param tag for parameter 'service_name' near manifests/linux/gentoo.pp:16.\n[warn]: Missing @param tag for parameter 'package_name' near manifests/linux/gentoo.pp:16.\n[warn]: Missing @param tag for parameter 'package_ensure' near manifests/linux/gentoo.pp:16.\n[warn]: Missing @param tag for parameter 'ensure' near manifests/linux/redhat.pp:15.\n[warn]: Missing @param tag for parameter 'enable' near manifests/linux/redhat.pp:15.\n[warn]: Missing @param tag for parameter 'service_name' near manifests/linux/redhat.pp:15.\n[warn]: Missing @param tag for parameter 'package_name' near manifests/linux/redhat.pp:15.\n[warn]: Missing @param tag for parameter 'package_ensure' near manifests/linux/redhat.pp:15.\n[warn]: Missing @param tag for parameter 'ensure' near manifests/linux/archlinux.pp:16.\n[warn]: Missing @param tag for parameter 'enable' near manifests/linux/archlinux.pp:16.\n[warn]: Missing @param tag for parameter 'service_name' near manifests/linux/archlinux.pp:16.\n[warn]: Missing @param tag for parameter 'package_name' near manifests/linux/archlinux.pp:16.\n[warn]: Missing @param tag for parameter 'package_ensure' near manifests/linux/archlinux.pp:16.\n[warn]: Missing a description for Puppet resource property 'ensure' at lib/puppet/type/firewallchain.rb:29.\nError: undefined method `parts' for nil:NilClass\nError: Try 'puppet help strings generate' for usage\n{noformat}\n", "epicLinkSummary": "Puppet Strings Maintenance", "estimate": "PT0S", "externalId": "32549", "fixedVersions": [], "id": "32549", "issueType": "Bug", "key": "PDOC-261", "labels": [], "originalEstimate": "PT0S", "parent": "32541", "parentSummary": "Puppet Strings Maintenance", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c09d27910a200718b903c", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "\"undefined method `parts' for Nil:NilClass\" when running strings", "timeSpent": "PT0S", "updated": "2019-08-06T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:724f8532-144f-4a06-830b-a614714244e4", "created": "2018-06-25T00:32:00.000000", "name": "find_match.pp", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12381"}], "comments": [{"author": "557058:724f8532-144f-4a06-830b-a614714244e4", "body": "Workaround: Make sure there are square brackets around the datatype, eg:\n\n\u00a0\n{noformat}\n# @return [String] representing the regex to match the main config file for\n{noformat}", "created": "2018-08-28T00:33:00.000000"}], "components": ["CLI", "UX"], "created": "2018-06-25T00:31:00.000000", "creator": "557058:724f8532-144f-4a06-830b-a614714244e4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5480bd0d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-98"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt5r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/May/19"}], "description": "*Overview*\n\nIf the @return tag is used to document a function written in puppet code, puppet-strings prints a stack trace, although it does seem to be able to continue past this\n\n\u00a0\n\n*Expected result*\n\nNo stack trace. Print a human-readable error if input was not in the correct format\n\n\u00a0\n\n*Actual result*\n\nStacktrace printed while generating documentation:\n\n\u00a0\n\n{{}}{{[error]: Unhandled exception in PuppetStrings::Yard::Handlers::Puppet::FunctionHandler:}}\n{{ in `functions/find_match.pp`:12:}}{{12: function logrotate::find_match($setting) >> String {}}{{[error]: NoMethodError: undefined method `first' for nil:NilClass}}\n{{[error]: Stack trace:}}\n{{ /home/geoff/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/puppet-strings-ab62430c6862/lib/puppet-strings/yard/handlers/puppet/function_handler.rb:40:in `add_return_tag'}}\n{{ /home/geoff/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/bundler/gems/puppet-strings-ab62430c6862/lib/puppet-strings/yard/handlers/puppet/function_handler.rb:24:in `block in <class:FunctionHandler>'}}\n{{ /home/geoff/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/yard-0.9.14/lib/yard/handlers/processor.rb:114:in `block (2 levels) in process'}}\n{{ /home/geoff/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/yard-0.9.14/lib/yard/handlers/processor.rb:112:in `each'}}\n{{ /home/geoff/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/yard-0.9.14/lib/yard/handlers/processor.rb:112:in `block in process'}}\n{{ /home/geoff/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/yard-0.9.14/lib/yard/handlers/processor.rb:111:in `each'}}{{Files: 2}}\n{{Modules: 0 ( 0 undocumented)}}\n{{Classes: 0 ( 0 undocumented)}}\n{{Constants: 0 ( 0 undocumented)}}\n{{Attributes: 0 ( 0 undocumented)}}\n{{Methods: 0 ( 0 undocumented)}}\n{{Puppet Classes: 1 ( 0 undocumented)}}\n{{Puppet Defined Types: 0 ( 0 undocumented)}}\n{{Puppet Functions: 1 ( 0 undocumented)}}\n{{Puppet Tasks: 0 ( 0 undocumented)}}\n{{Puppet Plans: 0 ( 0 undocumented)}}\n{{Puppet Types: 0 ( 0 undocumented)}}\n{{Puppet Providers: 0 ( 0 undocumented)}}\n{{ 100.00% documented}}\n\n\u00a0\n\n*Workaround*\n\nRemove any @return tag from comments and the error vanishes. Also tried:\n\n@return String\n\n@return String informative description\n\n\u00a0\n\nBoth result in error\n\n\u00a0\n\n*Testcase*\n\nAttached puppet-based function", "environment": "Latest Puppet Strings loaded in Gemfile via:\n\ngem 'puppet-strings', :git => '[https://github.com/puppetlabs/puppet-strings']\n\n\u00a0", "epicLinkSummary": "Puppet Strings Maintenance", "estimate": "PT0S", "externalId": "32476", "fixedVersions": [], "id": "32476", "issueType": "Bug", "key": "PDOC-260", "labels": [], "originalEstimate": "PT0S", "parent": "32541", "parentSummary": "Puppet Strings Maintenance", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:724f8532-144f-4a06-830b-a614714244e4", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Ruby error when @return used to document puppet function", "timeSpent": "PT0S", "updated": "2019-08-06T17:51:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "[~accountid:557058:68216498-c6bf-4e8f-92c1-ac84887b7c02] is this still needed? We would like to actually bump the puppet-strings required ruby version at some point. If it's still needed can you point me to the test cases in the puppet_agent module?", "created": "2019-06-19T12:20:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "[~accountid:557058:ad2090d1-8a61-4530-9228-7d89570c23b7] I believe (without proof) that we're far enough down the line that everybody who is running puppet-strings *should* do so on the ruby supplied by the PDK.", "created": "2019-06-20T02:29:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "OK, we updated our travis config to only test on >= 2.1.9 now, but have left the .gemspec requirement at >= 2.1.0 for the time being.", "created": "2019-06-20T09:55:00.000000"}], "components": [], "created": "2018-06-20T07:16:00.000000", "creator": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@292839c2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzns27:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_222398_*|*_10009_*:*_1_*:*_420090002_*|*_5_*:*_1_*:*_0"}], "description": "* https://github.com/puppetlabs/puppet-module-gems/blob/d3e026481adf1746b5029c201b5351fc832b0a3a/config/dependencies.yml#L27 is causing an install of puppet-strings to all modules \n* puppet_agent needs to test against older rubies to support upgrading from them\n* https://github.com/puppetlabs/puppet-strings/blob/d122b1962b41a5deb187ccedfc8857688d496978/puppet-strings.gemspec#L10 is too tight for puppet_agent testing\n\nPossible solutions:\n* relax puppet-string's ruby requirement to 2.1.0 from 2.1.9 and release 2.0.1\n* Remove puppet-strings from ruby 2.1 dependencies in puppet-module-gems\n\nWhile there is no testing on puppet-strings (or puppet) for older rubies, in the puppet_agent upgrade case, the code is not required to run, and for other configurations we can address issues on a best-effort open source basis if and when they get reported.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32445", "fixedVersions": [], "id": "32445", "issueType": "Improvement", "key": "PDOC-259", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "resolution": "Fixed", "resolutionDate": "2018-06-25T04:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "relax ruby requirement to 2.1.0 from 2.1.9", "timeSpent": "PT0S", "updated": "2019-06-20T09:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-06-05T16:21:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1faac104"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hznf4f:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24417_*|*_10007_*:*_1_*:*_4400656_*|*_3_*:*_1_*:*_61510044_*|*_5_*:*_1_*:*_0"}], "epicLinkSummary": "Document our own modules with Puppet Strings", "estimate": "PT0S", "externalId": "32346", "fixedVersions": [], "id": "32346", "issueType": "Task", "key": "PDOC-258", "labels": [], "originalEstimate": "PT0S", "parent": "32371", "parentSummary": "Document our own modules with Puppet Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-06-06T10:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings for puppetlabs-ibm_installation_manager", "timeSpent": "PT0S", "updated": "2018-06-06T10:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-06-05T16:20:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5aa172c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hznf47:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_36628_*|*_10007_*:*_1_*:*_175591681_*|*_3_*:*_1_*:*_61591154_*|*_5_*:*_1_*:*_0"}], "epicLinkSummary": "Document our own modules with Puppet Strings", "estimate": "PT0S", "externalId": "32342", "fixedVersions": [], "id": "32342", "issueType": "Task", "key": "PDOC-257", "labels": [], "originalEstimate": "PT0S", "parent": "32371", "parentSummary": "Document our own modules with Puppet Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-06-08T10:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings for puppetlabs-websphere_application_server", "timeSpent": "PT0S", "updated": "2018-06-08T10:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "This ticket represented the work of adding a CI step to modules to generate reference.md file, was never actually a change to be made to strings.", "created": "2019-05-28T16:06:00.000000"}], "components": [], "created": "2018-06-04T16:01:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f8b6cfd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hznbwf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_30931475446_*|*_6_*:*_1_*:*_0"}], "description": "Ticket to track work around getting automation of REFERENCE.md up and running for modules.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32376", "fixedVersions": [], "id": "32376", "issueType": "Task", "key": "PDOC-256", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Won't Do", "resolutionDate": "2019-05-28T16:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "REFERENCE.md in CI", "timeSpent": "PT0S", "updated": "2019-05-28T16:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "created": "2018-05-22T11:23:00.000000", "name": "image-2018-05-22-10-23-49-229.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12389"}], "comments": [{"author": "5a15cc24b87a44359db09635", "body": "It might be worth considering mimicking the [style PDK uses|https://github.com/puppetlabs/pdk-templates/blob/376595a63040cc31c0a653daa5261d0d2a99ece9/moduleroot_init/README.md.erb#L14-L23] for the ToC in the README?\n{noformat}#### Table of Contents\n\n1. [Description](#description)\n2. [Setup - The basics of getting started with <%= name %>](#setup)\n    * [What <%= name %> affects](#what-<%= name %>-affects)\n    * [Setup requirements](#setup-requirements)\n    * [Beginning with <%= name %>](#beginning-with-<%= name %>)\n3. [Usage - Configuration options and additional functionality](#usage)\n4. [Limitations - OS compatibility, etc.](#limitations)\n5. [Development - Guide for contributing to the module](#development)\n{noformat}", "created": "2018-05-22T11:28:00.000000"}], "components": [], "created": "2018-05-22T11:24:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d61099a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm767:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1072864832_*|*_10007_*:*_1_*:*_406349316_*|*_5_*:*_1_*:*_0"}], "description": "Currently, the headers in the table of contents and the section headers are the same level and in modules that only contain Resource types, for example, this looks broken (see attached image). This ticket is for possibly adding a \"table of contents\" heading to the markdown output and moving the table of contents headers down a level.\n\n !image-2018-05-22-10-23-49-229.png|thumbnail! ", "epicLinkSummary": "Puppet Strings 2.1.0", "estimate": "PT0S", "externalId": "32341", "fixedVersions": [], "id": "32341", "issueType": "Bug", "key": "PDOC-255", "labels": ["markdown"], "originalEstimate": "PT0S", "parent": "32409", "parentSummary": "Puppet Strings 2.1.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-06-08T14:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Differentiate between Table of Contents and Section headers", "timeSpent": "PT0S", "updated": "2018-06-08T14:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "How would that work? Why is a tag required?", "created": "2018-05-22T00:23:00.000000"}, {"author": "557058:41a4e05e-92c3-4b20-af84-c2eb651a5c4f", "body": "that would be nice to have, so i can better document usage of hiera keys that are not based on module parameters. tag would be great to get it out in json as separate key.", "created": "2018-08-07T09:12:00.000000"}, {"author": "623a4603761efb0069cd34da", "body": "What needs to be changed is this line --> https://github.com/puppetlabs/puppet-strings/blob/59428718a0ecbb639027aefc3cc40b7ade89e390/lib/puppet-strings/markdown/templates/classes_and_defines.erb#L41\n\nI see to options:\n1. Make it configurable in the @example\n2. Add a @hiera tag as suggested by [~accountid:557058:0b2a0f29-3749-4fc3-9772-13ad025585de]", "created": "2019-06-05T03:47:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "I like the idea of a @hiera tag. Though making the example syntax style configurable might be more flexible.\n\nI actually think that there may be two Hiera-related opportunities here:\n\n1) Documenting keys which are used in lookup() calls which aren't class parameters similar to the style of \"@param\". Maybe the data type could even be sussed out of the lookup() call parameters, if listed.\n\n2) Documenting example Hiera YAML blocks as they would look in the file. This would be more in keeping with the @example tag.\n\nTo [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd]'s question, I'd like to think the value of #1 is self-evident. From a user standpoint \"lookup()\" only based keys are still parameters which are part of the interface. For #2 most of my day-to-day user base is very familiar with making changes in Hiera/YAML, but they are not as familiar (in some cases, not at all) with Puppet class syntax and examples shown in Puppet class parameter declaration style wouldn't be nearly as meaningful/useful to them.", "created": "2019-06-05T05:11:00.000000"}, {"author": "623a4603761efb0069cd34da", "body": "{quote}\nFor #2 most of my day-to-day user base is very familiar with making changes in Hiera/YAML, but they are not as familiar (in some cases, not at all) with Puppet class syntax and examples shown in Puppet class parameter declaration style wouldn't be nearly as meaningful/useful to them.\n{quote}\n\nExactly the same for us! :)", "created": "2019-06-05T05:22:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I would prefer if there was a {{@lookup}} tag, and that it would work more or less as {{@param}}, i.e. you can state a data type and what it means. Then any yaml examples (or whatever is needed given whichever backend examples are provided for, that just uses the {{@example}} tag.\n\nThe reason I want \"lookup\" as tag rather than \"hiera\" is that it is \"lookup\" everywhere else (function, CLI, \"Automatic Parameter Lookup\", etc.) - and that \"hiera\" is a particular implementation of lookup.\n\nWhat remains is to decide on what the output looks like - should for example all @param be included again in the lookup section and mixed with those that are explicitly looked up?\n", "created": "2019-06-05T06:11:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "In my perfect world I'd like @lookup (and yes, you're right, a much better name than @hiera) to look and work more or less exactly like @param, near/in the param section. But maybe just auto-tagged with a \"Not available as a class parameter\" type message. I don't like the re-including all the @param docs again, it seems unnecessarily verbose bordering on confusing for a class with a very large set of parameters.\n\nEven with a @lookup tag, I still feel that there is a need for an additional @example-style tag for YAML-syntax highlighted groups of keys for specific use cases and complex behaviors requiring setting multiple keys to achieve specific results.", "created": "2019-06-05T06:39:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:623a4a827910a200718ac35d] Isn't it possible to just do\n{code}\n@example This is a bit of yaml\n```yaml\n    key: value\n```\n{code}\n", "created": "2019-06-05T09:29:00.000000"}, {"author": "623a4603761efb0069cd34da", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Nope it isn't, it breaks syntax highlighting. We currently use the following as a workaround:\n\n{code}\n# @summary My example summary\n#\n# #### Examples\n#\n# ```yaml\n# classes:\n#   - my_example_class\n# ```\n#\n# @param first_parameter Very important parameter\n{code}\n\nI'm sure why it works, but i shows up in the generate documentation.", "created": "2019-06-05T09:52:00.000000"}], "components": [], "created": "2018-05-21T14:46:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73b99bd8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm6f3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/May/18"}], "description": "Add a @hiera tag for puppet files so example hiera can be displayed with yaml syntax.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32515", "fixedVersions": [], "id": "32515", "issueType": "New Feature", "key": "PDOC-254", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "@hiera section for putting example hiera", "timeSpent": "PT0S", "updated": "2019-06-05T09:52:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-05-21T14:40:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c78da73"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt5j:"}], "description": "We don't really test the server action at all. \n\ncdenneen shared some disturbing output:\nhttps://files.slack.com/files-pri/T0AQJ2CTU-FAT2ZEK4H/screen_shot_2018-05-21_at_4.31.59_pm.png\n\nfrom \nhttps://slack-files.com/T0AQJ2CTU-FATFQTQEP-d6e113b634", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32548", "fixedVersions": [], "id": "32548", "issueType": "Bug", "key": "PDOC-253", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Possible issues with puppet strings server", "timeSpent": "PT0S", "updated": "2019-08-06T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-05-18T16:41:00.000000", "creator": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2880262c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm4lz:"}], "description": "'puppet docs' is deprecated and 'puppet describe is being deprecated.\u00a0 Puppet strings should cover any missing features and facilitate an improved, easier to understand, and more modular puppet documentation build flow.\n\n\u00a0\n\nMissing features include:\n\nSupport for provider details.\n\nSupport for core Puppet configuration (options and settings).\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32444", "fixedVersions": [], "id": "32444", "issueType": "Improvement", "key": "PDOC-252", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should add features to enable replacement of 'puppet describe' and 'puppet docs'", "timeSpent": "PT0S", "updated": "2018-08-09T13:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-05-18T16:39:00.000000", "creator": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3c34c968"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm4lr:"}], "description": "Puppet strings should have hooks or libraries so that we can expand it's mission.\u00a0 We would like to use it's features to replace functionality that is being deprecated in older code, but to do so we will need to support new templates, search paths, and possibly output formats or features, such as headers or footers.\n\n\u00a0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32375", "fixedVersions": [], "id": "32375", "issueType": "Improvement", "key": "PDOC-251", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:66e2b7b3-3544-4ef8-aceb-8e67e1315116", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should be more modular/have entry points to support templates, other formats, search paths", "timeSpent": "PT0S", "updated": "2018-08-09T13:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-05-16T14:44:00.000000", "creator": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1606fd79"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm21r:"}], "description": "When I run `puppet strings generate`, it very kindly gives me data on how much coverage I have, which is awesome. It calls out what's undocumented. However, it doesn't tell me where the undocumented things are! If I could get a file name and a line number, that'd sure be swell!\n\n{code}\n$ be puppet strings generate ./lib/**/*.rb --format markdown\nFiles:                    4\nModules:                  1 (    0 undocumented)\nClasses:                  3 (    1 undocumented)\nConstants:                0 (    0 undocumented)\nAttributes:               0 (    0 undocumented)\nMethods:                  3 (    1 undocumented)\nPuppet Classes:           0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:             2 (    0 undocumented)\nPuppet Providers:         2 (    0 undocumented)\nPuppet Functions:         0 (    0 undocumented)\n 81.82% documented\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32344", "fixedVersions": [], "id": "32344", "issueType": "Task", "key": "PDOC-250", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:4b02db91-705f-4691-a56a-9a839ecbce6e", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet strings should tell me where I'm missing documentation ", "timeSpent": "PT0S", "updated": "2018-05-16T15:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "created": "2018-05-15T14:30:00.000000", "name": "Screen Shot 2018-05-15 at 2.50.48 PM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12394"}, {"attacher": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "created": "2018-05-15T14:28:00.000000", "name": "Screen Shot 2018-05-15 at 2.51.10 PM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12395"}, {"attacher": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "created": "2018-05-15T14:31:00.000000", "name": "Screen Shot 2018-05-15 at 3.31.29 PM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12392"}], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "this conditional is broken. This may have been true in older versions of YARD, but the Registry now never contains files:\nhttps://github.com/puppetlabs/puppet-strings/blob/master/lib/puppet-strings/yard/templates/default/layout/html/setup.rb#L128 ", "created": "2018-05-15T14:42:00.000000"}], "components": [], "created": "2018-05-15T14:31:00.000000", "creator": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@382a3e3f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt5b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/May/18"}], "description": "When using the yardoc Extra Files feature via .yardopts:\n{noformat}\n--markup markdown\n--output-dir public\n-\nCHANGELOG.md\ndocs/Overview.md{noformat}\nPuppet Strings will still add the \"extra files\" to the documentation, but won't add the links in the left column docs list as is expected.\n\nFor example, the official Yardoc Documentation contains similar \"extra files\" containing things like the LICENSE, LEGAL, and CHANGLOG.md files, but also a user Guide. To get to this guide, the user can click the \"Files\" link displayed at the top of the docs browser in the left-hand column alongside the ruby Classes and Methods links:\n!Screen Shot 2018-05-15 at 2.51.10 PM.png!\n\nHowever, with Puppet Strings, the files are uploaded and stored in the same place and Strings, like base Yardoc, is still aware of the README* file, but the \"Files\" link is nowhere to be found and the only way to get to the Files list in question is to go to the index:\n!Screen Shot 2018-05-15 at 2.50.48 PM.png!\n\nAdditionally, another side effect of this has been found. Since the Files list isn't being generated or displayed, anytime a user visits a File from the Files list (Other than README*), they entire left-hand column will display a blank screen or HTTP 404 (depending on how the files are hosted):\n!Screen Shot 2018-05-15 at 3.31.29 PM.png!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32512", "fixedVersions": [], "id": "32512", "issueType": "Bug", "key": "PDOC-249", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Yardoc \"Extra Files\" Link doesn't display", "timeSpent": "PT0S", "updated": "2019-08-06T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5b574c837501ba2d6ea647b9", "body": "String has now been implemented per\u00a0[https://github.com/puppetlabs/puppetlabs-tomcat/commit/44f96c5cb2f290ef09a4fa5432a9541c7e81e071#diff-eb120e74eba90da6132666ceb0405bf9]", "created": "2019-06-06T08:17:00.000000"}], "components": [], "created": "2018-05-15T12:00:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17f00614"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm07j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33423379012_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Document our own modules with Puppet Strings", "estimate": "PT0S", "externalId": "32374", "fixedVersions": [], "id": "32374", "issueType": "Task", "key": "PDOC-248", "labels": [], "originalEstimate": "PT0S", "parent": "32371", "parentSummary": "Document our own modules with Puppet Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2019-06-06T08:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings for puppetlabs-tomcat", "timeSpent": "PT0S", "updated": "2019-06-06T08:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5b574c837501ba2d6ea647b9", "body": "Strings has now been implemented per\u00a0FM-7923", "created": "2019-06-06T08:16:00.000000"}], "components": [], "created": "2018-05-15T12:00:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@391f4bd2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm07b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33423338676_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Document our own modules with Puppet Strings", "estimate": "PT0S", "externalId": "32411", "fixedVersions": [], "id": "32411", "issueType": "Task", "key": "PDOC-247", "labels": [], "originalEstimate": "PT0S", "parent": "32371", "parentSummary": "Document our own modules with Puppet Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2019-06-06T08:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings for puppetlabs-apache", "timeSpent": "PT0S", "updated": "2019-06-06T08:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5b574c837501ba2d6ea647b9", "body": "Strings has now been implemented per\u00a0FM-7936", "created": "2019-06-06T08:15:00.000000"}], "components": [], "created": "2018-05-15T11:58:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1cbfe553"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm073:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33423411716_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Document our own modules with Puppet Strings", "estimate": "PT0S", "externalId": "32397", "fixedVersions": [], "id": "32397", "issueType": "Task", "key": "PDOC-246", "labels": [], "originalEstimate": "PT0S", "parent": "32371", "parentSummary": "Document our own modules with Puppet Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2019-06-06T08:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings for puppetlabs-postgresql", "timeSpent": "PT0S", "updated": "2019-06-06T08:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-05-15T11:58:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4e102436"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm06v:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1896106856_*|*_10007_*:*_1_*:*_5676440_*|*_5_*:*_1_*:*_0"}], "epicLinkSummary": "Document our own modules with Puppet Strings", "estimate": "PT0S", "externalId": "32340", "fixedVersions": [], "id": "32340", "issueType": "Task", "key": "PDOC-245", "labels": [], "originalEstimate": "PT0S", "parent": "32371", "parentSummary": "Document our own modules with Puppet Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-06-06T12:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings for puppetlabs-ntp", "timeSpent": "PT0S", "updated": "2018-06-07T14:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "5b574c837501ba2d6ea647b9", "body": "Strings has now been implemented per\u00a0FM-7950", "created": "2019-06-06T08:15:00.000000"}], "components": [], "created": "2018-05-15T11:58:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5a431319"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-188"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzm06f:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Jun/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33423432631_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Document our own modules with Puppet Strings", "estimate": "PT0S", "externalId": "32509", "fixedVersions": [], "id": "32509", "issueType": "Task", "key": "PDOC-244", "labels": [], "originalEstimate": "PT0S", "parent": "32371", "parentSummary": "Document our own modules with Puppet Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2019-06-06T08:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings for puppetlabs-stdlib", "timeSpent": "PT0S", "updated": "2019-06-06T08:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-05-14T12:05:00.000000", "creator": "557058:9d1d227b-434f-481d-8279-a026a8ca4bbd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@353dcc0e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt53:"}], "description": "When a class has a name like mcollective_agent_puppet, the resulting markdown from --format markdown looks like this:\n\n{code}\n## Plans\n\n* [`mcollective_agent_puppet::disable`](#mcollective_agent_puppetdisable): Disables Puppet on the provided nodes\n* [`mcollective_agent_puppet::disable_and_wait`](#mcollective_agent_puppetdisable_and_wait): Disables Puppet on the provided nodes and wait for them to idle  By default 10 checks will be done 20 seconds apart, you can adjust these usi\n* [`mcollective_agent_puppet::enable`](#mcollective_agent_puppetenable): Enables Puppet on the provided nodes\n* [`mcollective_agent_puppet::stuck_agents`](#mcollective_agent_puppetstuck_agents): Locates agents stuck applying for extended periods of time  When running Puppet in unstable networks one often finds a Puppet Agent stuck thi\n\n## Classes\n\n### mcollective_agent_puppet\n\nThe mcollective_agent_puppet class.\n{code}\n\nNote the _### mcollective_agent_puppet_ outside of code quotes.  This will result in agent in italics instead of showing the right text.  It should be\n\n{code}\n### mcollective\\_agent\\_puppet\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32443", "fixedVersions": [], "id": "32443", "issueType": "Bug", "key": "PDOC-243", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:9d1d227b-434f-481d-8279-a026a8ca4bbd", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "should escape underscores outside of code blocks", "timeSpent": "PT0S", "updated": "2019-08-06T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-04-23T02:32:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4fa396f1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt4v:"}], "description": "Currently, after each class, type, function, task, or plan name in the table of contents, Strings writes either the text from the @summary tag or the first 140 characters of the \"overview\" text. This ticket is to display the @summary tag or nothing at all, as a clipped overview may be nothing more than clutter in the table of contents.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32474", "fixedVersions": [], "id": "32474", "issueType": "Bug", "key": "PDOC-242", "labels": ["beginner"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Markdown TOC should display summary or nothing", "timeSpent": "PT0S", "updated": "2019-08-06T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "created": "2018-04-23T02:26:00.000000", "name": "Screen Shot 2018-04-23 at 9.25.52 AM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12388"}], "comments": [], "components": [], "created": "2018-04-23T02:26:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@127d027a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt4n:"}], "description": "Running {{puppet strings generate}} on the following function:\n{code:ruby}\n# @summary overview string\nPuppet::Functions.create_function(:dope) do\n  # This is a summary\n  #\n  # @author\n  #  the author of this class\n  #\n  # @example do something with it!\n  #  dope('blah', { some_option: 'key' }, ['bars','bars'])\n  #\n  # @raise [PuppetError] you might get a PuppetError!\n  #\n  # @version 1.1.1\n  #\n  # @since 1.0.0\n  #\n  # @see this thing\n  #   this thing, also\n  # @see this thing, too\n  #\n  # @todo DO SOME STUFF\n  # @param foo\n  #  This is a string called foo\n  # @param bars\n  #  This is an optional array called bars\n  # @param opts\n  #  blah\n  dispatch :dope do\n    param 'String', :foo\n    param 'Hash', :opts\n    optional_param 'Array', :bars\n    return_type 'String'\n  end\n\n  # @summary second override\n  #\n  # @param qux\n  #   A string\n  dispatch :dope2 do\n    param 'String', :qux\n    return_type 'Array'\n  end\nend\n{code}\n\nResults in the attached image (not much).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32472", "fixedVersions": [], "id": "32472", "issueType": "Bug", "key": "PDOC-241", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "html output breaks on multiple function signatures", "timeSpent": "PT0S", "updated": "2019-08-06T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [], "components": [], "created": "2018-04-20T07:59:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@42687e5c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlfrj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_52983_*|*_10007_*:*_1_*:*_1915038_*|*_5_*:*_1_*:*_0"}], "description": "affects Strings 1.2.1+\n\n\"features\" is a key that can be used in the new resource api type that i was not aware of. Further, it expects an array and the rsapi handler doesn't know what to do with an AST node of type :array. ", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32517", "fixedVersions": [], "id": "32517", "issueType": "Bug", "key": "PDOC-240", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-04-20T08:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "rsapi handler can't handle arrays", "timeSpent": "PT0S", "updated": "2018-04-20T08:32:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:557058:371cce5a-def8-43ef-91e9-d177c322c20b], this is by design to keep the blurbs in the table of contents short and the table of contents readable. The TOC line prefers the @summary tag and I would encourage you to take advantage of it. In retrospect, perhaps it should display the @summary or nothing.", "created": "2018-04-17T07:42:00.000000"}, {"author": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "body": "[~accountid:557058:0b2a0f29-3749-4fc3-9772-13ad025585de], thanks. One of my team members found that that was documented after I wrote this ticket, it was just a little jarring to see half a word in my summary. That seems like a fine solution, we just don't have ant of our modules using it yet.", "created": "2018-04-17T07:56:00.000000"}], "components": [], "created": "2018-04-16T11:01:00.000000", "creator": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20738968"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlazz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_574277883_*|*_5_*:*_1_*:*_0"}], "description": "Many of our modules have lengthy class headers, like here: https://github.com/simp/pupmod-simp-pki/blob/master/manifests/init.pp\n\nHowever, when using the markdown output format, the header is cut off after about 140 characters in the class summary section.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32373", "fixedVersions": [], "id": "32373", "issueType": "Bug", "key": "PDOC-239", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "resolution": "Done", "resolutionDate": "2018-04-23T02:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "In the class list in REFERENCE.md, the class description is cut off", "timeSpent": "PT0S", "updated": "2018-04-23T02:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-04-16T10:59:00.000000", "creator": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d385abe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlazj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_167478_*|*_1_*:*_1_*:*_76893661_*|*_10007_*:*_1_*:*_321819802_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_262944555"}], "description": "REFERENCE.md should have a little section at the top where it says that it was generated with `puppet strings generate --format markdown` and changes could be overwritten. ", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32396", "fixedVersions": [], "id": "32396", "issueType": "Improvement", "key": "PDOC-238", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "resolution": "Fixed", "resolutionDate": "2018-04-24T02:50:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "REFERENCE.md should include a notice saying that it has been generated", "timeSpent": "PT0S", "updated": "2018-04-24T02:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Uh not sure if you spotted it, but it says {{@sumary}} (one 'm') is not supported - so something is clearly not spelled right (somewhere)...", "created": "2018-04-16T08:40:00.000000"}, {"author": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "body": "Oh god, I'm an idiot. Thank you [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd]", "created": "2018-04-16T20:12:00.000000"}], "components": [], "created": "2018-04-16T04:37:00.000000", "creator": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50fe4baa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzlan3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_56087017_*|*_5_*:*_1_*:*_0"}], "description": "When running puppet-strings 1.4.1 against files that have a {{@summary}} tag i get the following error:\n\n{code}\n> bundle exec puppet strings                                                                                                                                    [warn]: Unknown tag @sumary\n[warn]: Unknown tag @sumary in file `manifests/item/v_38598.pp` near line 18\n[warn]: Missing @param tag for parameter 'rexecd_ensure' near manifests/item/v_38598.pp:18.\n[warn]: Missing @param tag for parameter 'rexecd_enable' near manifests/item/v_38598.pp:18.\n[warn]: Unknown tag @sumary\n[warn]: Unknown tag @sumary in file `manifests/standard/rhel_6.pp` near line 7\n[warn]: Unknown tag @sumary\n[warn]: Unknown tag @sumary in file `manifests/standard/rhel_6/low.pp` near line 7\n[warn]: Unknown tag @sumary\n[warn]: Unknown tag @sumary in file `manifests/standard/rhel_6/high.pp` near line 7\n[warn]: Unknown tag @sumary\n[warn]: Unknown tag @sumary in file `manifests/standard/rhel_6/medium.pp` near line 7\nFiles:                    5\nModules:                  0 (    0 undocumented)\nClasses:                  0 (    0 undocumented)\nConstants:                0 (    0 undocumented)\nAttributes:               0 (    0 undocumented)\nMethods:                  0 (    0 undocumented)\nPuppet Classes:           5 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:             0 (    0 undocumented)\nPuppet Providers:         0 (    0 undocumented)\nPuppet Functions:         0 (    0 undocumented)\n 100.00% documented\n{code}", "environment": "{code}\n> bundle show \nGems included by the bundle:\n  * addressable (2.5.2)\n  * ast (2.4.0)\n  * bundler (1.16.1)\n  * coderay (1.1.2)\n  * diff-lcs (1.3)\n  * docile (1.3.0)\n  * domain_name (0.5.20170404)\n  * facter (2.5.1)\n  * facterdb (0.5.1)\n  * fast_gettext (1.1.2)\n  * gettext (3.2.9)\n  * gettext-setup (0.30)\n  * hiera (3.4.2)\n  * http-cookie (1.0.3)\n  * jgrep (1.5.0)\n  * json (2.0.4)\n  * json-schema (2.8.0)\n  * locale (2.1.2)\n  * mcollective-client (2.12.0)\n  * metaclass (0.0.4)\n  * metadata-json-lint (2.1.0)\n  * method_source (0.8.2)\n  * mime-types (2.99.3)\n  * mocha (1.1.0)\n  * multi_json (1.13.1)\n  * net-scp (1.2.1)\n  * net-ssh (4.2.0)\n  * net-telnet (0.1.1)\n  * netrc (0.11.0)\n  * parallel (1.12.1)\n  * parallel_tests (2.14.2)\n  * parser (2.5.1.0)\n  * powerpack (0.1.1)\n  * pry (0.10.4)\n  * public_suffix (3.0.2)\n  * puppet (5.5.0)\n  * puppet-blacksmith (3.4.0)\n  * puppet-lint (2.3.5)\n  * puppet-module-posix-default-r2.4 (0.3.1)\n  * puppet-module-posix-dev-r2.4 (0.3.1)\n  * puppet-strings (1.2.1)\n  * puppet-syntax (2.4.1)\n  * puppet_pot_generator (1.0.1)\n  * puppetlabs_spec_helper (2.7.0)\n  * rainbow (2.2.2)\n  * rake (12.3.1)\n  * rest-client (1.8.0)\n  * rgen (0.8.2)\n  * rspec (3.7.0)\n  * rspec-core (3.7.1)\n  * rspec-expectations (3.7.0)\n  * rspec-mocks (3.7.0)\n  * rspec-puppet (2.6.11)\n  * rspec-puppet-facts (1.9.0)\n  * rspec-support (3.7.1)\n  * rspec_junit_formatter (0.3.0)\n  * rubocop (0.49.1)\n  * rubocop-i18n (1.2.0)\n  * rubocop-rspec (1.16.0)\n  * ruby-progressbar (1.9.0)\n  * sfl (2.3)\n  * simplecov (0.16.1)\n  * simplecov-html (0.10.2)\n  * slop (3.6.0)\n  * spdx-licenses (1.1.0)\n  * specinfra (2.67.3)\n  * stomp (1.4.4)\n  * systemu (2.6.5)\n  * text (1.3.1)\n  * unf (0.1.4)\n  * unf_ext (0.0.7.5)\n  * unicode-display_width (1.3.0)\n  * yard (0.9.12)\n{code}\n\nruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin17]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32473", "fixedVersions": [], "id": "32473", "issueType": "Bug", "key": "PDOC-237", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:afa80a20-2814-4f2f-bbdd-ad5db4190123", "resolution": "Cannot Reproduce", "resolutionDate": "2018-04-16T20:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "@summary does not work", "timeSpent": "PT0S", "updated": "2018-04-16T20:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-04-12T07:24:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5fb54763"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl8y7:"}], "description": "from PDOC-153:\n{quote}\nAlso, Consider the following, commonly used, {{params.pp}}\n\n{code}\nfoo::params {\n  $bar = 'baz'\n}\n{code}\n\nIn this case, I would like to be able to declare that the {{$foo::params::bar}} variable is available for use but it is not a {{parameter}}.\n\nIdeally, this would be documented with the {{@!accessor [r]}} method, but, when I attempted to use this, an error was thrown.\n\nPresently, I'll continue using {{@param}} but it is inherently incorrect and a more correct alternative should be supplied.\n{quote}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32442", "fixedVersions": [], "id": "32442", "issueType": "New Feature", "key": "PDOC-236", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "@!accessor directive for params.pp (or something)", "timeSpent": "PT0S", "updated": "2019-05-01T15:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Will triage tickets that used to live here and some will make their way into a new Strings Maintenance epic", "created": "2019-05-01T15:19:00.000000"}], "components": [], "created": "2018-04-12T02:14:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Modules"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76c6cf8a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Strings Next"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl8kf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_33224673858_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32471", "fixedVersions": [], "id": "32471", "issueType": "Epic", "key": "PDOC-235", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Won't Do", "resolutionDate": "2019-05-01T15:19:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings Next", "timeSpent": "PT0S", "updated": "2019-05-01T15:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-04-10T07:32:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@29f49646"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzl607:"}], "description": "These emit-json options. GET 'EM OUT https://github.com/puppetlabs/puppet-strings/commit/9728d1004a6dff597fb34aa2d4c998999e4acb9d#diff-d247b2f19934e420821d364a7ff58475L19", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32585", "fixedVersions": [], "id": "32585", "issueType": "Task", "key": "PDOC-234", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "remove deprecated cli options", "timeSpent": "PT0S", "updated": "2019-09-04T10:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [{"attacher": "623c128d866b810069e4380f", "created": "2018-03-27T06:16:00.000000", "name": "output.md.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12384"}], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:623c128d866b810069e4380f], thanks for raising this issue! Have you had a chance to work on the PR?", "created": "2018-03-29T10:17:00.000000"}, {"author": "623c128d866b810069e4380f", "body": "[~accountid:557058:0b2a0f29-3749-4fc3-9772-13ad025585de] - the code was done before I submitted this ticket, but I haven't created a PR.\u00a0 I'm still waiting on my company to get a CLA signed.\u00a0 Should I create the PR before the CLA is signed?\n\nAlso, not sure if you saw this:\n{quote}Is this something you would consider for a trivial patch exemption since it is just changes to white space formatting?\n{quote}\nThat might be a stretch but I thought I'd ask anyway.", "created": "2018-03-29T10:39:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:623c128d866b810069e4380f], I think this would probably fall under the exemption. You can go ahead and open a PR without the CLA, for sure.", "created": "2018-03-29T10:45:00.000000"}, {"author": "623c128d866b810069e4380f", "body": "Submitted PR: [https://github.com/puppetlabs/puppet-strings/pull/170]\n\nI also mirrored this to GitLab if you want to check the rendering.\u00a0 See [https://gitlab.com/john.lyman/puppet-strings/tree/markdown-compatibility/spec/fixtures/unit/markdown]\n\n\u00a0", "created": "2018-03-30T07:36:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:623c128d866b810069e4380f], PR merged. Please verify on here that this fixes your issue when you get some time.", "created": "2018-04-03T06:26:00.000000"}, {"author": "623c128d866b810069e4380f", "body": "Yes, it's fixed, [~accountid:557058:0b2a0f29-3749-4fc3-9772-13ad025585de].\u00a0 Thanks", "created": "2018-04-03T06:49:00.000000"}], "components": [], "created": "2018-03-27T06:29:00.000000", "creator": "623c128d866b810069e4380f", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fb9e1a8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkwg7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_186468675_*|*_10007_*:*_1_*:*_349525712_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_76703418"}], "description": "Some markdown parsers do not convert atx-style headers correctly unless they are surrounded by blank lines. (See below for example.)\n\nThe erb templates should be updated so that all headers are surrounded by blank lines to increase the chance of them rendering correctly with different parsers.\n\nI have already updated the templates and will submit a PR once my company signs the CLA.  Is this something you would consider for a trivial patch exemption since it is just changes to white space formatting?\n\n\n\nExample rendering of {{output.md}} spec fixture on GitLab:\n!output.md.png|thumbnail! ", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32514", "fixedVersions": [], "id": "32514", "issueType": "Bug", "key": "PDOC-233", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c128d866b810069e4380f", "resolution": "Fixed", "resolutionDate": "2018-04-03T08:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Generated markdown does not always render correctly", "timeSpent": "PT0S", "updated": "2018-04-03T08:40:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-03-14T11:14:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a423763"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzknyv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_685139630_*|*_3_*:*_1_*:*_255224_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1190468011"}], "description": "Once the warning for documenting title/name is removed, add an example to the style guide that shows this is an ok thing to do.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32584", "fixedVersions": [], "id": "32584", "issueType": "Task", "key": "PDOC-232", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-04-05T04:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add example with name parameter documented", "timeSpent": "PT0S", "updated": "2018-04-05T04:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-03-13T17:55:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73cf22af"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzknav:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_747465596_*|*_3_*:*_1_*:*_19606093_*|*_5_*:*_1_*:*_0"}], "description": "I made some changes to the resource_api handler based on the acceptance tests, but I should have changed the test instead. This is for that work. More details to come. Maybe.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32372", "fixedVersions": [], "id": "32372", "issueType": "Bug", "key": "PDOC-231", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-03-22T14:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Unbreak resource_api handler", "timeSpent": "PT0S", "updated": "2018-03-22T14:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "That is not possible since resolving a value from hiera requires a fully populated node scope - without that there is no way of knowing which values will be looked up. Also, hiera backends may call out to external services to get values. Since you cannot know you would need to put \"see hiera\" on everything which is not helpful at all.\n\nFurther - modules are typically documented in isolation.\n\nWhile there exist one special case - if a module has a very simple hierarchy and uses only data files without any interpolation / aliases to variables, then it could be indexed to produce a key => value map that could be used to indicate that the module comes with a hiera bound value for a parameter. Since that will not always work, is it really worth all the trouble?\n", "created": "2018-03-13T08:16:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:623c0ed7866b810069e4361e] this is something that has come up before with Strings, but [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] makes some good points. Perhaps foremost, it'd add massive overhead when generating documentation. Second, we'd really like to keep Strings as a way to document only the module itself and getting into Hiera gets into environments and even beyond. Thanks for raising this ticket, though!", "created": "2018-04-16T06:50:00.000000"}], "components": [], "created": "2018-03-12T21:19:00.000000", "creator": "623c0ed7866b810069e4361e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a15a26e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzklyn:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2971886835_*|*_6_*:*_1_*:*_0"}], "description": "When generating documentation for parameterized classes, puppet strings only includes the default values which are specified within the class itself.\n\nInstead, puppet strings should also consider values in hiera, and indicate when there are multiple possible defaults, or an unclear selection (hiera files based upon facts) with a comment such as \"multiple defaults: see hiera\".", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32410", "fixedVersions": [], "id": "32410", "issueType": "Improvement", "key": "PDOC-230", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c0ed7866b810069e4361e", "resolution": "Won't Do", "resolutionDate": "2018-04-16T06:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet strings should look for default parameter values in module-scoped hiera", "timeSpent": "PT0S", "updated": "2018-04-16T06:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-03-12T10:38:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3797dd85"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Customer Feedback"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkkgf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1012756_*|*_10007_*:*_1_*:*_499614202_*|*_3_*:*_1_*:*_168615140_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1296526693"}], "description": "In a Puppet 4 function:\nif return_type is used AND there is no @return tag used, an error is thrown.\n\n*Repro*\n1. Create a simple Puppet 4 function\n{code}\nPuppet::Functions.create_function(:foo) do\n  # @summary does a thing\n  # @param param1 a string for stuff\n  dispatch :foo do\n    param 'String', :param1\n    return_type 'String'\n  end\nend\n{code}\n2. Run {{puppet strings generate --format markdown}}\n\ne.g.\n{code}\npuppet strings generate --format markdown\n--- SNIP ---\n[warn]: Missing documentation for Puppet function 'archive::artifactory_checksum' at lib/puppet/functions/archive/artifactory_checksum.rb:4.\n[error]: Unhandled exception in PuppetStrings::Yard::Handlers::Ruby::FunctionHandler:\n  in `lib/puppet/functions/archive/artifactory_checksum.rb`:4:\n\n        4: Puppet::Functions.create_function(:'archive::artifactory_checksum') do\n\n[error]: NoMethodError: undefined method `types=' for nil:NilClass\n[error]: Stack trace:\n        /home/alex/.rvm/gems/ruby-2.4.1/gems/puppet-strings-1.2.1/lib/puppet-strings/yard/handlers/ruby/function_handler.rb:142:in `block in add_overload_tag'\n        /home/alex/.rvm/gems/ruby-2.4.1/gems/puppet-strings-1.2.1/lib/puppet-strings/yard/handlers/ruby/function_handler.rb:135:in `each'\n        /home/alex/.rvm/gems/ruby-2.4.1/gems/puppet-strings-1.2.1/lib/puppet-strings/yard/handlers/ruby/function_handler.rb:135:in `add_overload_tag'\n        /home/alex/.rvm/gems/ruby-2.4.1/gems/puppet-strings-1.2.1/lib/puppet-strings/yard/handlers/ruby/function_handler.rb:100:in `block in add_tags'\n        /home/alex/.rvm/gems/ruby-2.4.1/gems/puppet-strings-1.2.1/lib/puppet-strings/yard/handlers/ruby/function_handler.rb:98:in `each'\n        /home/alex/.rvm/gems/ruby-2.4.1/gems/puppet-strings-1.2.1/lib/puppet-strings/yard/handlers/ruby/function_handler.rb:98:in `add_tags'\n{code}\n\n*In the code...*\n\nThe function handler assumes that a return tag exists and tries to add the return type to it:\nhttps://github.com/puppetlabs/puppet-strings/blob/1.2.1/lib/puppet-strings/yard/handlers/ruby/function_handler.rb#L142", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32470", "fixedVersions": [], "id": "32470", "issueType": "Bug", "key": "PDOC-229", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-04-04T04:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "error with return_type and @return tag", "timeSpent": "PT0S", "updated": "2021-06-10T23:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [{"author": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "body": "[~accountid:557058:0b2a0f29-3749-4fc3-9772-13ad025585de] can we chat through what this work would entail?", "created": "2018-03-06T07:59:00.000000"}], "components": [], "created": "2018-03-02T16:57:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@76549b6a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkduv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "06/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6411_*|*_10007_*:*_1_*:*_668221303_*|*_3_*:*_2_*:*_1451880348_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_683318682"}], "description": "Task Plans live in ./plans/\n\nThey are written in the DSL so the existing Puppet parser should be helpful.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32513", "fixedVersions": [], "id": "32513", "issueType": "Task", "key": "PDOC-228", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-04-04T04:40:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Task Plan support", "timeSpent": "PT0S", "updated": "2018-04-04T04:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "+100", "created": "2018-03-04T04:03:00.000000"}], "components": [], "created": "2018-03-02T15:12:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c083cce"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkdqf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Mar/18"}], "description": "Let's get rid of the option to specify markdown as the markup. It should _only_ be markdown.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32339", "fixedVersions": [], "id": "32339", "issueType": "Task", "key": "PDOC-227", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "use markdown as default/only markup type", "timeSpent": "PT0S", "updated": "2019-05-01T15:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "There are type aliases as the ones described in the linked documentation - i.e. an autoloaded data type alias like:\n{code:puppet}\ntype MyModule::MyType = SomeOtherType\n{code}\n\nFor those it would be great if an adjacent comment is taken as documentation of the aliased type.\n\nNote that for some such declarations - it is not as much an _alias_  as a type definition - for example:\n{code:puppet}\ntype MyModule::MyType = Object[{ attributes => { name => String, birthdate => Timestamp}}]\n{code}\n\nThere are also local type aliases in 4.x ruby functions. More complex functions use those to define aliases that are only in effect for a single function. Here is an example from the {{lookup()}} function:\n{code:ruby}\n  local_types do\n    type 'NameType         = Variant[String, Array[String]]'\n    type 'ValueType        = Type'\n    type 'DefaultValueType = Any'\n    type 'MergeType        = Variant[String[1], Hash[String, Scalar]]'\n    type 'BlockType        = Callable[NameType]'\n    type \"OptionsWithName  = Struct[{\\\n      name                => NameType,\\\n      value_type          => Optional[ValueType],\\\n      default_value       => Optional[DefaultValueType],\\\n      override            => Optional[Hash[String,Any]],\\\n      default_values_hash => Optional[Hash[String,Any]],\\\n      merge               => Optional[MergeType]\\\n    }]\"\n    type \"OptionsWithoutName = Struct[{\\\n      value_type          => Optional[ValueType],\\\n      default_value       => Optional[DefaultValueType],\\\n      override            => Optional[Hash[String,Any]],\\\n      default_values_hash => Optional[Hash[String,Any]],\\\n      merge               => Optional[MergeType]\\\n    }]\"\n\n  end\n\n  dispatch :lookup_1 do\n    scope_param\n    param           'NameType',       :name\n    optional_param  'ValueType',      :value_type\n    optional_param  'MergeType',      :merge\n  end\n{code}\n\nDocumenting those are a bit more difficult - should the signature of the function show the aliases only - for example {{NameType}} (then you have to guess, or read the general description what a {{NameType}} is (requires author of function doc to write that), should it use an expanded {{NameType}} instead of just the alias (more difficult to read), or should it present the list of local aliases?\n\nI think it would be great if we could show a list of aliases and then use those aliases in the multiple signatures.\nIt may be that 4.x local aliases is complex enough to warrant a separate ticket.\n\n", "created": "2018-03-04T04:17:00.000000"}, {"author": "62437c021da0e1007138c15e", "body": "I'd like to back that request up. I just found out that the documentation pages generated by puppet strings shows the types for class and defined type params, but their definitions are nowhere to be found when you want to know what they stand for.\n\n\u00a0\n\nThey could be listed as pages in the same section as ruby custom types which are already supported, or if this confuses things too much, they could also have their own section named \"Type aliases\". The very least would be to see what the type is an alias of (e.g. show the definition in the html page). then, like Henrik suggested, it would be great if all uses of this type in class and defined type params would link to the corresponding page", "created": "2018-06-26T12:55:00.000000"}, {"author": "557058:8b6a5143-cd16-434d-9c56-e1f3b642a830", "body": "Just passing through and noticed this ticket\u2015documentation for Type aliases have been implemented for a while:\n * Example documentation generated from a simple Type Aliases: [https://github.com/puppetlabs/puppetlabs-stdlib/blob/main/REFERENCE.md#stdlibcompatbool]\n * Example documentation generated from a complex Type Alias (e.g., \"not as much an _alias_ as a type definition\"): [https://github.com/puppetlabs/puppetlabs-stdlib/blob/main/REFERENCE.md#stdlibfilesource]\n * Not sure if local type aliases are handled or not", "created": "2021-08-23T17:37:00.000000"}], "components": [], "created": "2018-03-02T14:45:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e06ae44"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkdnj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Mar/18"}], "description": "Support for these would be great:\nhttps://puppet.com/docs/puppet/5.3/lang_type_aliases.html", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32441", "fixedVersions": [], "id": "32441", "issueType": "Task", "key": "PDOC-226", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Support for Type Aliases", "timeSpent": "PT0S", "updated": "2021-08-23T17:37:00.000000", "votes": "12", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The yard syntax for parameter default could perhaps be used for this. The module author knows a parameter has a default value in hiera data in the module and could note that with some notation - yard does not have semantics for default for {{@param}} tags, but for {{@option}} it is suggested to place a default value in parentheses. We could use the same for {{@param}}. \n\nThe convention could be {{(<value>)}} or say {{(module data)}} where the first documents a literal value for example {{(42)}}, and the second that there will be a lookup and that the value is in the module's data (if possible user could also state what the default in module data is - if it always resolves to the same value - if so use something like {{(module data 42)}}.\n\nCould also use {{(\\*)}} or somesuch to indicate \"default in module data\", but you have to know the notation to understand that.\n{code:puppet}\n# @param port [Integer] (*) the port to use\nclass myclass(Integer $port) { }\n{code}\n\nNothing of the above requires any changes to code, only that a convention is established.", "created": "2018-03-04T04:34:00.000000"}, {"author": "557058:9d1d227b-434f-481d-8279-a026a8ca4bbd", "body": "I have no ideas on how to do this with yard but details of the module supplied lookup options (merge strategies) would be amazing. ", "created": "2018-03-04T04:51:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:9d1d227b-434f-481d-8279-a026a8ca4bbd] Since the information after the bracketed type for a param is completely ignored by yard itself, you can put anything there. What Strings could do is to have a convention that for example a hash in puppet language notation inside parentheses following the bracket would be displayed a certain way. That would be kind of like additional meta tags (but those are lot harder to introduce).\n\nSomething like:\n{code}\n@param foo [Hash] (lookup_options => { merge => 'deep' }) foo is a param for foo details...\n{code}\n\nYou would have to do some static declaration like that as the information can not be obtained statically from hiera because the effective lookup_options may depend on values at runtime.  Since that is the case, maybe it is just as good to spell it out in the text in free form - so if code does something fancy you can just say so?\n\n{code}\n@param foo [Hash] (* deep merge) foo is a param for foo details\n@param bar [Hash] (* deep merge if bar_deep is true) bar is a param for bar details\n{code}", "created": "2018-03-05T14:40:00.000000"}], "components": [], "created": "2018-03-02T14:41:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23a0920e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkdmf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Mar/18"}], "description": "Would like to see documentation created for types, providers, facts and the hiera levels when using data in modules. - Garrett Honeycutt\n\nI agree with this but so much of data in modules is dependent on compile time material that it would be impossible to do anything except for defaults (which should be done). However, we do need some way to indicate that a parameter is in module data instead of 'required' that doesn't require keeping a manual mapping (because automation is good, right?) - Trevor Vaughn\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32506", "fixedVersions": [], "id": "32506", "issueType": "Task", "key": "PDOC-225", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Data in Modules?", "timeSpent": "PT0S", "updated": "2018-03-05T14:40:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [], "components": [], "created": "2018-03-01T05:26:00.000000", "creator": "623c100c4a57610068e74585", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56dc7076"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkc9z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_21102860_*|*_5_*:*_1_*:*_0"}], "description": "With puppet-strings 1.2.0\n{code:java}$ puppet strings generate --emit-json-stdout ~/dev/puppet-tftp/manifests/init.pp\nWARNING: '--emit-json-stdout' is deprecated. Use '--format json' instead.\n100.00% documented{code}\nWith puppet-strings 1.1.0\n{code:java}$ puppet strings generate --emit-json-stdout ~/dev/puppet-tftp/manifests/init.pp\n{\n\u00a0 \"puppet_classes\": [\n\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"tftp\",\n\u00a0\u00a0\u00a0\u00a0\u00a0 \"file\": \"/home/ekohl/dev/puppet-tftp/manifests/init.pp\",\n\u00a0\u00a0\u00a0\u00a0\u00a0 \"line\": 28,\n\u00a0\u00a0\u00a0\u00a0\u00a0 \"docstring\": {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"TFTP server class\\n\\nThis class installs and configures a TFTP server, supporting both standalone\\ndaemons and xinetd-based TFTP servers.\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tags\": [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"summary\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"Installs and configures a TFTP server\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"example\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"include tftp\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"Simple usage\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"example\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"class { 'tftp':\\n\u00a0 root => '/tftpboot',\\n}\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"Configure a TFTP server with a non-default root directory\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"example\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"class { 'tftp:'\\n\u00a0 package => 'tftp-hpa-destruct',\\n}\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"Configure a TFTP server with non-default package name\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"param\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"Configures the root directory for the TFTP server\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"types\": [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"Stdlib::Absolutepath\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"root\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"param\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"Name of the TFTP server package\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"types\": [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"String\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"package\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"param\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"Name of the syslinux package, essential for pxe boot\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"types\": [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"Variant[String, Array[String]]\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"syslinux_package\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"param\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"Runs a TFTP service when true, configures xinetd when false\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"types\": [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"Boolean\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"daemon\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"param\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"manages the root dir, which tftpd will serve, defaults to true\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"types\": [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"Boolean\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"manage_root_dir\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"param\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"Name of the TFTP service, when daemon is true\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"types\": [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"Optional[String]\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"service\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"tag_name\": \"param\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"text\": \"Override TFTP service provider, when daemon is true\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"types\": [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"Optional[String]\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"name\": \"service_provider\"\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ]\n\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0 \"defaults\": {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"service\": \"undef\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"service_provider\": \"undef\"\n\u00a0\u00a0\u00a0\u00a0\u00a0 },\n\u00a0\u00a0\u00a0\u00a0\u00a0 \"source\": \"class tftp (\\n\u00a0 Stdlib::Absolutepath $root,\\n\u00a0 String $package,\\n\u00a0 Variant[String, Array[String]] $syslinux_package,\\n\u00a0 Boolean $daemon,\\n\u00a0 Boolean $manage_root_dir,\\n\u00a0 Optional[String] $service = undef,\\n\u00a0 Optional[String] $service_provider = undef,\\n) {\\n\\n\u00a0 class {'::tftp::install':}\\n\u00a0 -> class {'::tftp::config':}\\n\u00a0 ~> class {'::tftp::service':}\\n\u00a0 -> Class['::tftp']\\n}\"\n\u00a0\u00a0\u00a0 }\n\u00a0 ],\n\u00a0 \"defined_types\": [\n\n\u00a0 ],\n\u00a0 \"resource_types\": [\n\n\u00a0 ],\n\u00a0 \"providers\": [\n\n\u00a0 ],\n\u00a0 \"puppet_functions\": [\n\n\u00a0 ]\n}\n{code}\n\u00a0\n\nIf a class has undocumented parameters, --emit-json-stdout also puts warnigs on stdout rather than stderr which would also break JSON parsing.\n\nIn [kafo_parsers|https://github.com/theforeman/kafo_parsers] we call with --emit-json-stdout. We can't detect the exact puppet-strings version easily and maintaining compatibility with older versions is useful. We can redirect stderr to `/dev/null` so that'd be a good compromise. The [exact call|https://github.com/theforeman/kafo_parsers/blob/25e8a12adcedbfd9bd6be5056f5871a9f6425209/lib/kafo_parsers/puppet_strings_module_parser.rb#L40]", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32338", "fixedVersions": [], "id": "32338", "issueType": "Bug", "key": "PDOC-224", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c100c4a57610068e74585", "resolution": "Fixed", "resolutionDate": "2018-03-01T11:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "puppet-strings 1.2.0 breaks --emit-json-stdout", "timeSpent": "PT0S", "updated": "2018-03-01T11:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This ticket is mostly for the .travis.yml work (updating testing matrix). The gemspec still needs to be updated but that will happen at release time.", "created": "2018-03-22T15:01:00.000000"}], "components": [], "created": "2018-02-28T11:46:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@460067e7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkbq7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1889171381_*|*_3_*:*_1_*:*_19720131_*|*_5_*:*_1_*:*_0"}], "description": "Old Ruby and old Puppet are old. As part of the 2.0.0 major release, we will be dropping support for older Ruby and Puppet versions to modernize the gem and keep in line with the Puppet ecosystem.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32503", "fixedVersions": [], "id": "32503", "issueType": "Task", "key": "PDOC-223", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-03-22T15:01:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Drop Ruby < 2.1.9 and Puppet < 4", "timeSpent": "PT0S", "updated": "2018-03-22T15:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [], "components": [], "created": "2018-02-28T11:24:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@425d4f2a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-218"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkbpj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_9943_*|*_3_*:*_1_*:*_2762681_*|*_5_*:*_1_*:*_0"}], "epicLinkSummary": "Puppet Strings 1.2.0", "estimate": "PT0S", "externalId": "32469", "fixedVersions": [], "id": "32469", "issueType": "Task", "key": "PDOC-222", "labels": [], "originalEstimate": "PT0S", "parent": "32468", "parentSummary": "Puppet Strings 1.2.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-02-28T12:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Release 1.2.0", "timeSpent": "PT0S", "updated": "2018-02-28T12:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-02-27T14:39:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5f2ee5e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkatz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_36977327798_*|*_5_*:*_1_*:*_0"}], "epicLinkSummary": "Puppet Strings 2.1.0", "estimate": "PT0S", "externalId": "32547", "fixedVersions": [], "id": "32547", "issueType": "Task", "key": "PDOC-221", "labels": [], "originalEstimate": "PT0S", "parent": "32409", "parentSummary": "Puppet Strings 2.1.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Done", "resolutionDate": "2019-05-01T15:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Release 2.1.0", "timeSpent": "PT0S", "updated": "2019-05-01T15:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-02-27T14:38:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1080099b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkatr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_6203317888_*|*_10007_*:*_1_*:*_23990421_*|*_3_*:*_2_*:*_81650958_*|*_5_*:*_1_*:*_0"}], "description": "Released 2.0.0 (abf5c636a047a73ca7895e96315483ea3b01e5f9)", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32510", "fixedVersions": [], "id": "32510", "issueType": "Task", "key": "PDOC-220", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-05-11T16:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Release 2.0.0", "timeSpent": "PT0S", "updated": "2018-05-11T16:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-02-27T14:27:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Modules"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60423224"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-8"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Strings 2.1.0"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_purple"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkas7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Apr/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_36978468471_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32409", "fixedVersions": [], "id": "32409", "issueType": "Epic", "key": "PDOC-219", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2019-05-01T15:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings 2.1.0", "timeSpent": "PT0S", "updated": "2019-05-01T15:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-02-27T14:19:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Modules"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@22a0eaef"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Strings 1.2.0"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkarz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_78680521_*|*_6_*:*_2_*:*_575618_*|*_10010_*:*_1_*:*_1018370"}], "description": "Describes content of version 1.2.0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32468", "fixedVersions": [], "id": "32468", "issueType": "Epic", "key": "PDOC-218", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-02-28T12:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings 1.2.0", "timeSpent": "PT0S", "updated": "2018-02-28T12:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Done!", "created": "2018-02-27T14:31:00.000000"}], "components": [], "created": "2018-02-27T14:11:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5dc7c46b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkarr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1198461_*|*_5_*:*_1_*:*_0"}], "description": "Please add Eric Putnam (putnam.eric@gmail.com) as an owner of the puppet-strings gem for releasing. https://rubygems.org/gems/puppet-strings", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32440", "fixedVersions": [], "id": "32440", "issueType": "Story", "key": "PDOC-217", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-02-27T14:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "add Eric Putnam as a gem owner", "timeSpent": "PT0S", "updated": "2018-02-27T14:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [], "components": [], "created": "2018-02-22T17:59:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@251a8f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-218"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk7jj:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_418139870_*|*_5_*:*_1_*:*_0"}], "description": "This is for tracking a once over on markdown generation functionality.\n- Classes that are marked private appear as empty headings in the markdown (@api tag needs to be added to style guide)", "epicLinkSummary": "Puppet Strings 1.2.0", "estimate": "PT0S", "externalId": "32583", "fixedVersions": [], "id": "32583", "issueType": "Story", "key": "PDOC-216", "labels": [], "originalEstimate": "PT0S", "parent": "32468", "parentSummary": "Puppet Strings 1.2.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-02-27T14:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Iterate on markdown feature", "timeSpent": "PT0S", "updated": "2018-02-27T14:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-02-15T10:37:00.000000", "creator": "557058:caae9c58-399c-4716-be37-c404839c368a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3dfbbf90"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk24v:"}], "description": "There is currently no way to document type aliases using Strings.\n\nThey are not really mentioned in any of the documentation, or the proposed style guide for Strings.\n\nThey are ignored when documentation is rendered. If a class param uses them, it shows the name of the alias, but NOT what it makes up.\n\n\u00a0\n\nThere should be some way to separately document these, and the param type listing should link to it or provide it as an expandable element or such.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32408", "fixedVersions": [], "id": "32408", "issueType": "New Feature", "key": "PDOC-215", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:caae9c58-399c-4716-be37-c404839c368a", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Type aliases are not handled well", "timeSpent": "PT0S", "updated": "2019-10-11T20:38:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-02-15T10:34:00.000000", "creator": "557058:caae9c58-399c-4716-be37-c404839c368a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68455ca7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk24n:"}], "description": "There should be a simple, documented method for customizing the rendered HTML output - adding custom sections or reordering things, applying custom CSS, etc.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32395", "fixedVersions": [], "id": "32395", "issueType": "New Feature", "key": "PDOC-214", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:caae9c58-399c-4716-be37-c404839c368a", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add ability to customize the template", "timeSpent": "PT0S", "updated": "2018-02-15T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "body": "Referencing @note from the style guide should be removed until this ticket is completed. https://puppet.com/docs/puppet/5.5/puppet_strings_style.html#classes-and-defined-types", "created": "2018-05-29T07:48:00.000000"}], "components": [], "created": "2018-02-15T10:33:00.000000", "creator": "557058:caae9c58-399c-4716-be37-c404839c368a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18dcc19c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk247:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1052623545_*|*_10007_*:*_1_*:*_27556296666_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_9419999784"}], "description": "Strings should support the @note YARD tag in rendered documentation.", "epicLinkSummary": "Puppet Strings 2.1.0", "estimate": "PT0S", "externalId": "32582", "fixedVersions": [], "id": "32582", "issueType": "New Feature", "key": "PDOC-213", "labels": [], "originalEstimate": "PT0S", "parent": "32409", "parentSummary": "Puppet Strings 2.1.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:caae9c58-399c-4716-be37-c404839c368a", "resolution": "Fixed", "resolutionDate": "2019-05-01T15:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add support for @note tag", "timeSpent": "PT0S", "updated": "2019-05-01T15:08:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This has been requested by many community members", "created": "2018-02-27T14:43:00.000000"}], "components": [], "created": "2018-02-15T10:32:00.000000", "creator": "557058:caae9c58-399c-4716-be37-c404839c368a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3d8ea7fa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-219"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk23z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Feb/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1051846952_*|*_10007_*:*_1_*:*_27556280419_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_9420836973"}], "description": "Strings should support the YARD @todo tag in rendered documentation.", "epicLinkSummary": "Puppet Strings 2.1.0", "estimate": "PT0S", "externalId": "32499", "fixedVersions": [], "id": "32499", "issueType": "New Feature", "key": "PDOC-212", "labels": [], "originalEstimate": "PT0S", "parent": "32409", "parentSummary": "Puppet Strings 2.1.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:caae9c58-399c-4716-be37-c404839c368a", "resolution": "Fixed", "resolutionDate": "2019-05-01T15:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add support for @todo tag", "timeSpent": "PT0S", "updated": "2019-05-01T15:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c09d27910a200718b903c", "body": "I'd like to second this.\u00a0 Using puppet strings server is not practical in our environment because of security concerns.\n\n\u00a0\n\nAs of now, there's no way to extract the same content that server generates for use in any other context.\u00a0 I'd prefer be able to autogenerate documentation for the whole environment as puppet strings server displays and deploy the result to a webserver like Apache where I can wrap it in authentication.", "created": "2018-07-19T08:37:00.000000"}], "components": [], "created": "2018-02-15T10:28:00.000000", "creator": "557058:caae9c58-399c-4716-be37-c404839c368a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@41a7864c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzk23r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jul/18"}], "description": "when you run `puppet strings server` it parses all the modules in your modulepath and then generates a master/meta index.\n\n\u00a0\n\nThis is not currently possible to do using `puppet strings generate` which is done per module.\n\n\u00a0\n\nIt would be super useful to be able to feed generate a list of modules or a modulepath and have it generate documentation like puppet strings server does.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32546", "fixedVersions": [], "id": "32546", "issueType": "New Feature", "key": "PDOC-211", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:caae9c58-399c-4716-be37-c404839c368a", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add support for generating a \"meta index\"", "timeSpent": "PT0S", "updated": "2018-07-19T08:37:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:468002b0-7677-4624-b195-4b7b813f8dc1", "attachments": [], "comments": [], "components": [], "created": "2018-02-08T11:21:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@69fe1d95"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt7z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4724345527_*|*_10007_*:*_1_*:*_2611640341_*|*_3_*:*_1_*:*_269234377_*|*_5_*:*_1_*:*_0"}], "description": "Update puppetlabs-mysql with strings docs to use as a proof of concept ahead of publicizing strings.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32497", "fixedVersions": [], "id": "32497", "issueType": "Task", "key": "PDOC-210", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-05-07T12:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add puppet-strings docs to puppetlabs-mysql as a POC", "timeSpent": "PT0S", "updated": "2018-05-07T12:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-01-27T12:37:00.000000", "creator": "623c12b950bb2b0070b6b384", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11a49266"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt4f:"}], "description": "I would like to pass :yard_args => '--output-dir public' in the rake strings:generate task. However, since the :json argument is considered before :yard_args, then HTML output is disabled and only the JSON output is produced.\n\nFor example, this is the command-line example presented in the Puppet Strings README:\n\n{{rake 'strings:generate[**/*.pp, true, true, markdown, test.json, --output-dir\\ public]'}}\n\nRunning this command generates a file named \"--output-dir public\" containing the JSON output.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32508", "fixedVersions": [], "id": "32508", "issueType": "Bug", "key": "PDOC-208", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c12b950bb2b0070b6b384", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Unable to pass :yard_args to rake strings::generate without generating json", "timeSpent": "PT0S", "updated": "2019-08-06T17:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2018-01-25T14:56:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fee4a26"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt73:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}], "description": "See PDOC-193 for info on existing yard tool.\n\n\nYou can see this in raw action by simply calling the CLI tool from the PuppetStrings.generate method and then running strings on a module.\n{code:ruby}\nYARD::CLI::I18n.run(search_patterns)\n{code}\n\nSee from the attached file, there's a lot of stuff that we won't want in there. It will be confusing to the translator and lots of unnecessary work. A few examples:\n\nA lot of tags get the tag itself extracted into a msgid that looks like the one here:\n{code}\n# @param [String]\n#: ../lib/puppet/type/radius.rb:3\n#: ../manifests/install.pp:10\nmsgid \"tag|param|name\"\nmsgstr \"\"\n{code}\nFirst of all, we don't want the param name translated. Second, that's just confusing to look at.\n\nIn other cases, we _do_ want part of this msgid. This mostly occurs in examples:\n{code}\n# @example\n#: ../lib/puppet/type/radius.rb:3\nmsgid \"tag|example|Here's an example\"\nmsgstr \"\"\n{code}\n\nFinally, we don't want to translate code examples, obviously\n{code} \n# @example Using the type.\n#: ../lib/puppet/type/test.rb:3\nmsgid \"test { 'mctesterson':\\n\"\n\"  foo     => 'hi',\\n\"\n\"  my_prop => 'bar',\\n\"\n\"}\"\nmsgstr \"\"\n{code}\n\n\nThe attached file also includes the README, which we may or may not want to pursue.\n\nSo *this work probably involves*\n1. Running the #run method as suggested above\n2. Some kind of post-processing? I actually don't have a good idea. Monkey patching?", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32545", "fixedVersions": [], "id": "32545", "issueType": "New Feature", "key": "PDOC-207", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "i18n in puppet-strings", "timeSpent": "PT0S", "updated": "2019-08-06T17:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [], "components": [], "created": "2018-01-25T14:53:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c532717"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt2f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25135_*|*_10007_*:*_1_*:*_727909473_*|*_3_*:*_1_*:*_1835164309_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2252409609"}], "description": "puppet-strings cannot currently document Puppet Tasks. Since we pushed Tasks so hard this past year, it would be a good/nice-to-have idea to have this capability out of the box for a 2.0.0.\n\nWe only need to parse the Task metadata, especially because you can write a Task in any language.\n\nOnly use keys that are already available in the task metadata. No fancy yard tag stuff from the description.\n\nProbably don't need a handler but maybe? Otherwise go straight to code object -> registry -> render", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32505", "fixedVersions": [], "id": "32505", "issueType": "New Feature", "key": "PDOC-206", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-03-22T09:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Task documentation capability", "timeSpent": "PT0S", "updated": "2018-03-22T09:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Duplicate of PDOC-184. However, an epic _does_ need to be created around documenting our modules and generating the REFERENCE.md.", "created": "2018-02-07T11:51:00.000000"}], "components": [], "created": "2018-01-23T12:54:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "all strings data is used to generate a file called REFERENCE.md"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@225522ab"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-218"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzjg73:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_179726833_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1112476246"}], "description": "Related to PDOC-131 sort of.\n\nInstead of generating entire README, we've instead decided to compromise on a REFERENCE.md. \n\nThis will be puppet-strings data in a format (markdown) that CS has said is valuable while taking a large burden off of the README.\n\npuppet-strings will need to be able to generate this markdown which will just be taking the Yard registries and organizing the data into acceptable looking markdown, in a file called REFERENCE.md.\n\nIn the cli, we can either create a new --emit-markdown option or create a --format and use it for both json and markdown.\n", "epicLinkSummary": "Puppet Strings 1.2.0", "estimate": "PT0S", "externalId": "32494", "fixedVersions": [], "id": "32494", "issueType": "New Feature", "key": "PDOC-197", "labels": [], "originalEstimate": "PT0S", "parent": "32468", "parentSummary": "Puppet Strings 1.2.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Duplicate", "resolutionDate": "2018-02-07T11:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Generate REFERENCE.md", "timeSpent": "PT0S", "updated": "2018-02-27T14:20:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Hi [~accountid:557058:caae9c58-399c-4716-be37-c404839c368a]! For now, I've PR'd a fix to the README, and we've noted this in our puppet-strings guidelines (these are in progress and a draft should be available soon).", "created": "2018-01-19T15:12:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Closed by PDOC-76 and https://github.com/puppetlabs/puppet-strings/pull/151", "created": "2018-01-24T15:19:00.000000"}], "components": [], "created": "2018-01-09T12:31:00.000000", "creator": "557058:caae9c58-399c-4716-be37-c404839c368a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@80cc537"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-218"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzj37b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_872833084_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_433244704"}], "description": "The docs for Strings states:\n{quote}\nThe most commonly used tags for Strings are:\n...\nFor a complete list of tags, see the [YARD Tags Overview|http://www.rubydoc.info/gems/yard/file/docs/Tags.md].{quote}\n\nThis implies that while the tags in the list are the most often used ones, any valid tag can be used.\n\nHowever, when I used the {{@todo}} and {{@note}} tags they did not show up in my rendered HTML documentation as expected.\n\nThis ticket is intended to request that support for the additional tags be added, and that the documentation be updated to reflect actual behavior in the mean time since adding the tags may be non-trivial.\n", "environment": "Strings 1.1.1, yard 0.9.9, Ruby 2.1.9p490 (2016-03-30 revision 54437) [i386-mingw32], puppet 4.5.3 on win7\n\nStrings command ran from a \"Start command prompt with puppet\" instance, non-admin user", "epicLinkSummary": "Puppet Strings 1.2.0", "estimate": "PT0S", "externalId": "32581", "fixedVersions": [], "id": "32581", "issueType": "Bug", "key": "PDOC-196", "labels": [], "originalEstimate": "PT0S", "parent": "32468", "parentSummary": "Puppet Strings 1.2.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:caae9c58-399c-4716-be37-c404839c368a", "resolution": "Fixed", "resolutionDate": "2018-01-24T15:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Documentation misleading about acceptable tags", "timeSpent": "PT0S", "updated": "2018-02-27T14:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-12-19T12:05:00.000000", "creator": "5c37a1aa1c6a692feab9b753", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5df60fb3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt47:"}], "description": "When the server is started via *puppet strings server*,\n\nI can navigate to the modules and their init classes but cannot navigate to other classes within the module. When I click on the link to any other class other than init, the webpage displays:\n\nCould not find object: puppet_classes::<module_name>_3A_3A<class_name>", "environment": "puppet resource package puppet-strings\npackage { 'puppet-strings':\n  ensure => ['1.1.1'],\n}\n\npuppet resource package yard\npackage { 'yard':\n  ensure => ['0.9.12'],\n}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32467", "fixedVersions": [], "id": "32467", "issueType": "Bug", "key": "PDOC-195", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "5c37a1aa1c6a692feab9b753", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Could not find object: puppet_classes::<module_name>_3A_3A<class_name>", "timeSpent": "PT0S", "updated": "2019-08-06T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-12-13T12:58:00.000000", "creator": "557058:45fa3568-deb5-4da5-b894-a1ec07f1c138", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5892774f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hziv3j:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_41130699688_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32337", "fixedVersions": [], "id": "32337", "issueType": "Task", "key": "PDOC-194", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:45fa3568-deb5-4da5-b894-a1ec07f1c138", "resolution": "Fixed", "resolutionDate": "2019-04-03T15:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "investigate using modules to replace current script automation", "timeSpent": "PT0S", "updated": "2019-04-03T15:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "created": "2018-06-08T15:28:00.000000", "name": "yard.pot", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12380"}], "comments": [], "components": [], "created": "2017-12-13T07:03:00.000000", "creator": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@406ecf17"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt7b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}], "description": "Since 0.8.0 yard has included an {{i18n}} subcommand to place all the doc strings into a .pot file. It seems like if we just run this automatically when a user invokes {{puppet strings}} that would go a long way to enabling i18n workflows for module documentation.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32544", "fixedVersions": [], "id": "32544", "issueType": "Task", "key": "PDOC-193", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Evaluate using `yard i18n` to extract doc string content into POT files", "timeSpent": "PT0S", "updated": "2019-09-04T10:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-12-07T15:41:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@111c0fae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt7r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_5908_*|*_1_*:*_1_*:*_4230431442_*|*_10007_*:*_1_*:*_414572009_*|*_3_*:*_1_*:*_1365629_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_4835667029"}], "description": "Currently, if you try to document a parameter called \"title\", Strings throws a warning saying there's no such parameter. This is, of course, untrue and there should be an exception for it. There should also not be a warning for \"name\".\n\nThis is probably a warning based on Puppet keywords.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32407", "fixedVersions": [], "id": "32407", "issueType": "Bug", "key": "PDOC-192", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Fixed", "resolutionDate": "2018-03-27T10:35:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Remove warning for $title parameter ", "timeSpent": "PT0S", "updated": "2018-03-27T10:35:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:557058:ad2090d1-8a61-4530-9228-7d89570c23b7], do you know if the @summary tag for puppet-strings has any specific use? Was the plan for the Forge to consume it in a particular way or...?", "created": "2017-11-17T17:59:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "See https://puppet.atlassian.net/browse/PDOC-161 for the origins of the summary tag.", "created": "2017-11-20T10:40:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This ticket is a bit redundant. We're tracking style guide work in PDOC-186", "created": "2018-01-23T12:31:00.000000"}], "components": [], "created": "2017-11-17T17:57:00.000000", "creator": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Expect Style Guide to:\n  \n- Contain examples for documenting each type of component:\n-- class\n-- defined type\n-- function\n-- custom type\n-- provider\n-- fact\n- explain how each tag should be used"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@489a3d8e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl88n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_847794_*|*_3_*:*_1_*:*_5768431612_*|*_5_*:*_1_*:*_0"}], "description": "Tagging [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79]\n\nWe'll need to figure out how each component should be documented. I think we can re-use a lot from the [puppet-strings README|https://github.com/puppetlabs/puppet-strings/blob/master/README.md#documenting-puppet-code-for-strings].\n\nSome questions we already have:\nWhat is the @summary tag for? \n_The existence of 'overview' makes it seem redundant, however after speaking with Vox briefly, it seems like people pick one or the other to use and stick with that. It may have some kind of usage with the Forge or something._\nShould examples be included with their respective component or broken out into a Usage section?", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32580", "fixedVersions": [], "id": "32580", "issueType": "Task", "key": "PDOC-190", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "resolution": "Duplicate", "resolutionDate": "2018-01-23T12:31:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Create Style Guide Proposal", "timeSpent": "PT0S", "updated": "2018-02-08T11:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-11-02T10:44:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Modules"}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Developer Experience"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@151a32aa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Strings 2.0.0"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhxyf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1663768196_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_2_*:*_12881811295_*|*_10015_*:*_2_*:*_3098128182"}], "description": "The next steps to get strings to a state where we and the community agree it's actually complete.\n\n*This epic deals with puppet-strings directly, not Forge or other work.*\nSee PF-1437 for Forge stuff.\n\nMore details in this doc:\nhttps://docs.google.com/document/d/1Tj1Y_RxKzP5lGJKXwxQWzNpYu_wVMpYF4JTuhkc2oqw/edit", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32609", "fixedVersions": [], "id": "32609", "issueType": "Epic", "key": "PDOC-183", "labels": ["iac_feature"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2018-05-25T15:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings 2.0.0", "timeSpent": "PT0S", "updated": "2020-01-02T06:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-10-31T09:15:00.000000", "creator": "557058:dd7ba664-1e31-4b6c-9525-768d1f3babc2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Ability to specify a git remote such as 'upstream' and have the strings:gh_pages:update rake task push the gh-pages branch to that remote.\n\nSuggest implementing through an environment variable so it is easily configurable and does not need to be checked in to the module as it could be different for each collaborator."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7b3144a4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhw6v:"}], "description": "The current behavior of running the rake task strings:gh_pages:update is for it to create a branch named gh-pages and force push that to the origin git remote.\n\nAs a collaborator on projects, this means that a branch is pushed to my fork and not to the upstream remote where it should be.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32336", "fixedVersions": [], "id": "32336", "issueType": "New Feature", "key": "PDOC-181", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:dd7ba664-1e31-4b6c-9525-768d1f3babc2", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Allow specifying a git remote for the strings:gh_pages:update task", "timeSpent": "PT0S", "updated": "2017-10-31T09:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "PDOC-206", "created": "2018-03-05T12:33:00.000000"}], "components": [], "created": "2017-10-27T12:18:00.000000", "creator": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Developer Experience"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17ba651f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-9"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "puppet-strings Tasks support"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "orange"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzht3z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11150078832_*|*_6_*:*_1_*:*_0"}], "description": "puppet-strings should know how to document tasks in a module based on task metadata", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32335", "fixedVersions": [], "id": "32335", "issueType": "Epic", "key": "PDOC-180", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "resolution": "Duplicate", "resolutionDate": "2018-03-05T12:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "puppet-strings Tasks support", "timeSpent": "PT0S", "updated": "2018-03-26T13:40:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This ticket does not block a new puppet-strings release", "created": "2018-02-08T11:25:00.000000"}], "components": [], "created": "2017-10-26T10:07:00.000000", "creator": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7cdfcfa5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt87:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Feb/18"}], "description": "This ticket is super vague but integration with the PDK should probably be on the roadmap somewhere...\n\n- add gem to PDK cache (may already be done)\n- add recommended style of strings notation into PDK templates\n- cli front-end for running puppet-strings", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32608", "fixedVersions": [], "id": "32608", "issueType": "Story", "key": "PDOC-189", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "PDK Integration", "timeSpent": "PT0S", "updated": "2019-05-01T15:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [{"author": "557058:468002b0-7677-4624-b195-4b7b813f8dc1", "body": "\\o/", "created": "2018-05-07T12:54:00.000000"}, {"author": "557058:468002b0-7677-4624-b195-4b7b813f8dc1", "body": "Bah, wrong ticket", "created": "2018-05-07T12:55:00.000000"}], "components": [], "created": "2017-10-26T10:07:00.000000", "creator": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4d558311"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt8v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7882701753_*|*_10007_*:*_2_*:*_2853714800_*|*_3_*:*_1_*:*_540039861_*|*_5_*:*_2_*:*_70171_*|*_10005_*:*_1_*:*_6003646232"}], "description": "# Open marketing ticket\n # Fill out template (on google docs)\n # Do words\n # Get review\n\nwords due. do words.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32490", "fixedVersions": [], "id": "32490", "issueType": "Task", "key": "PDOC-187", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "resolution": "Fixed", "resolutionDate": "2018-05-14T10:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings 2.0.0 improvements blog post", "timeSpent": "PT0S", "updated": "2018-05-14T10:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This ticket is no longer valid.\n\nIf there is documentation in the source code, we will generate REFERENCE.md and the information will be removed from the README. Boom. ", "created": "2018-01-25T14:10:00.000000"}], "components": [], "created": "2017-10-26T10:07:00.000000", "creator": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@a9e83cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhs2f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7880592862_*|*_6_*:*_1_*:*_0"}], "description": "Rolling out strings will eventually require us to remove the long reference sections from module READMEs. This will be a big change for a lot of users, so we'll want to make sure that strings docs are 100% ready to go before we start removing reference sections.\n\nAs such, it will be necessary to have an interim step where we have docs both in the README and as comments in the source code. In order to manage this reasonably, we'll want to have the comments be the source of truth and run strings against them to update the README reference section accordingly. The goal of this ticket is to add a feature that will let us do that.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32543", "fixedVersions": [], "id": "32543", "issueType": "Story", "key": "PDOC-185", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "resolution": "Won't Do", "resolutionDate": "2018-01-25T14:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Keep generated content in sync with static content in README automatically", "timeSpent": "PT0S", "updated": "2018-02-08T11:38:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I googled if someone had already implemented this for yard, and there seems to be some attempts, but since we use special templates for the HTML, it is probably best if we develop a set of markdown templates for yard ourselves (could be quite a lot of work, but probably better than tweaking someone else's half baked approach", "created": "2017-11-09T01:39:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "FYI [~accountid:557058:89652935-bbd6-4e26-afbf-0a04063f7db8]", "created": "2017-12-13T06:22:00.000000"}], "components": [], "created": "2017-10-26T10:06:00.000000", "creator": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@642573df"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-218"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt27:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "09/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7608046307_*|*_10007_*:*_1_*:*_440001773_*|*_3_*:*_1_*:*_1233298627_*|*_10009_*:*_1_*:*_683626474_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_16790_*|*_10005_*:*_1_*:*_170632441"}], "description": "We want to add Markdown as a third output option for strings (right now the only options are HTML and JSON). Markdown generation will probably look something like the way we generate JSON using the YARD registry https://github.com/puppetlabs/puppet-strings/blob/master/lib/puppet-strings/json.rb", "epicLinkSummary": "Puppet Strings 1.2.0", "estimate": "PT0S", "externalId": "32439", "fixedVersions": [], "id": "32439", "issueType": "New Feature", "key": "PDOC-184", "labels": [], "originalEstimate": "PT0S", "parent": "32468", "parentSummary": "Puppet Strings 1.2.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "resolution": "Fixed", "resolutionDate": "2018-02-20T16:33:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add ability to generate Markdown", "timeSpent": "PT0S", "updated": "2018-02-27T14:20:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "[~accountid:557058:958f7ee7-5a93-4d32-9615-42ff2d57e18c] Are there still any plans for the content teams to adopt puppet-strings in more modules? (I hope so! Please let PDE know if there are functional blockers to that work in puppet-strings.) If so, does it make sense for the unresolved tickets in the epic to move into the MODULES project or similar? We'd like to make the PDOC project focused specifically on puppet-strings features, bugs, etc.", "created": "2019-05-02T14:38:00.000000"}], "components": [], "created": "2017-10-26T10:06:00.000000", "creator": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Modules"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Modules"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a9d11ed"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Document Modules using puppet-strings"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzhs1z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/May/19"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_11244562067_*|*_6_*:*_1_*:*_0_*|*_10010_*:*_1_*:*_47228142357_*|*_10015_*:*_1_*:*_2363"}], "description": "Eventually we should work towards Strings compatible comments in all puppetlabs supported modules (as this is the standard we're proposing other people hold their modules to). We should start though by picking a list of several modules, at least one or two of which are rather complicated, to document with Strings. That way, users have examples to look to when trying to figure out how to document their own modules.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32371", "fixedVersions": [], "id": "32371", "issueType": "Epic", "key": "PDOC-188", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "resolution": "Fixed", "resolutionDate": "2019-09-03T04:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Document our own modules with Puppet Strings", "timeSpent": "PT0S", "updated": "2019-09-03T04:31:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Just a note that this is something we should probably interface with Vox about. They've been using Strings in their modules for a while and probably have some good ideas around best practices we should take into account.", "created": "2017-11-07T15:35:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Work on this has started with [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79]. We discussed some things the other day and plan to have a proposal for PDE/Vox prepared by Dec 5, 2017.", "created": "2017-11-17T17:48:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Assigning this to myself as I work on drafting this and compiling feedback. That doesn't mean [~accountid:557058:42c68e91-7f1c-4767-895c-70596db6f3d8] is off the hook, though. :D\n", "created": "2018-01-16T12:17:00.000000"}, {"author": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] is this done now?", "created": "2018-05-11T10:09:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Yes, I should say so!", "created": "2018-05-11T10:50:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "[https://puppet.com/docs/puppet/latest/puppet_strings_style.html]\u00a0for watchers ", "created": "2018-05-11T11:04:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Oh, gosh, thank you [~accountid:557058:c5ea6c35-c500-4334-8131-e031af9f81a4]! :D I honestly forgot that folks might be watching the ticket.", "created": "2018-05-11T12:37:00.000000"}], "components": [], "created": "2017-10-26T10:05:00.000000", "creator": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@332be994"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt1z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Nov/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5965522563_*|*_3_*:*_1_*:*_11057962530_*|*_5_*:*_1_*:*_8819021104_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32406", "fixedVersions": [], "id": "32406", "issueType": "Story", "key": "PDOC-186", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:245824fd-f598-4b92-8f0c-3fa4078a3f9b", "resolution": "Done", "resolutionDate": "2018-08-21T12:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Comprehensive strings style guide", "timeSpent": "PT0S", "updated": "2018-08-21T12:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": ["DOCS"], "created": "2017-10-12T12:20:00.000000", "creator": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@68982787"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfpq7:"}], "description": "It would be nice to be able to generate puppet-strings docs for custom ruby facts as well. \nAs of right now, documentation for any custom facts still has to live in the code comments or the README.md file.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32394", "fixedVersions": [], "id": "32394", "issueType": "New Feature", "key": "PDOC-179", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Support Custom Ruby Fact documentation", "timeSpent": "PT0S", "updated": "2018-05-15T16:37:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "This is by design. It may be possible to modify the yard settings to also get output of private API.", "created": "2017-10-02T18:36:00.000000"}, {"author": "62437c021da0e1007138c15e", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] I'm curious why this was done by design. If the module developers indicate that a class should be private, then it'd be nice if it showed up in the generated documentation.. but there might be some things that I haven't considered.", "created": "2018-06-26T13:02:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The thinking at the time was that users should not see and use those things anyway.", "created": "2018-06-26T13:31:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Strings will now render things marked with \"@api private\", but we still need to update the HTML templates so that things are appropriately marked as private. I've created PDOC-278 to track that.", "created": "2019-05-02T14:12:00.000000"}], "components": [], "created": "2017-10-02T15:58:00.000000", "creator": "623c11ebee1b5a0070293512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@48e89103"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzh6af:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_49846419854_*|*_5_*:*_1_*:*_0"}], "description": "As best I can tell, putting @api private doesn't seem to be adding any special text / banner to puppet strings generated docs.\n\n{code}\n# @api private\n# jmeter::install\n#\n# @summary This class installs JMeter (and, optionally, the plugin manager), from tarball. It also handles installing plugins.\n{code}\n\n{noformat}\ngreta~/git/puppet-jmeter(data_types|\u271a5)% gem list puppet-strings\n\n*** LOCAL GEMS ***\n\npuppet-strings (1.1.0)\n{noformat}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32502", "fixedVersions": [], "id": "32502", "issueType": "Bug", "key": "PDOC-178", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c11ebee1b5a0070293512", "resolution": "Fixed", "resolutionDate": "2019-05-02T14:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "@api private not showing up in generated docs", "timeSpent": "PT0S", "updated": "2019-05-02T14:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "[~accountid:557058:ba2d08f5-8947-446f-bada-55ecb351d6cc] thanks for the note and hopefully after PuppetConf we can cut a new release", "created": "2017-10-05T15:13:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Version 1.1.1 was released on Oct 20 which should contain all previously unreleased fixes.", "created": "2017-11-02T13:12:00.000000"}], "components": [], "created": "2017-09-21T18:14:00.000000", "creator": "557058:f950b51f-34da-4ab4-974c-82e6f4989984", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e334207"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtqv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Oct/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1198742816_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_2411934158"}], "description": "There are a few fixed in master branch that are not yet released as a ruby gem which means I need to install directly from git every time I want to use puppet-strings, would it be possible to get an updated gem released please?  Thanks!", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32370", "fixedVersions": [], "id": "32370", "issueType": "Bug", "key": "PDOC-177", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:f950b51f-34da-4ab4-974c-82e6f4989984", "resolution": "Fixed", "resolutionDate": "2017-11-02T13:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Updated puppet-strings rubygem release", "timeSpent": "PT0S", "updated": "2017-11-02T13:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-08-25T05:41:00.000000", "creator": "557058:b79f6a67-ae1f-4d72-9eca-fcfa9e4bdaab", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c24284b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Method Found", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzg8db:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_237365_*|*_6_*:*_1_*:*_0"}], "description": "The puppetlabs puppet_agent module, doesn't add the puppet 5 repos properly\n\nIt tries to install from a url which isn't valid for puppet 5 packages.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32542", "fixedVersions": [], "id": "32542", "issueType": "Bug", "key": "PDOC-176", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:b79f6a67-ae1f-4d72-9eca-fcfa9e4bdaab", "resolution": "Won't Do", "resolutionDate": "2017-08-25T05:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "The puppetlabs puppet_agent module, doesn't add the puppet 5 repos properly", "timeSpent": "PT0S", "updated": "2017-08-25T05:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "When considering adding support for hiera bindings it is also of value to make it possible to document default data bindings and lookup options.  A module could for example come with lookup options configured for deep merge etc for some parameters, and could have defaults bound in hiera (as opposed to defaults in manifests). The most elegant would be if PDOC could pick up the information directly from hiera, but this gets complicated because information can come from any kind of backend. It is therefore best if this is documented in the puppet logic. If doing that, then there needs to be a structured way to mark up a parameter with such information.", "created": "2017-08-03T05:24:00.000000"}, {"author": "557058:f950b51f-34da-4ab4-974c-82e6f4989984", "body": "so you mean extend this ticket to cover if someone was using in-module\nhiera data to set defaults then pick up those and document what they\nresolve to?  That would be even better and really useful.  perhaps there\ncould even be some javascript magic so that you could see what defaults eg\nfor different OS's\n\nOn 3 Aug. 2017 21:25, \"Henrik Lindberg (JIRA)\" <\nissue-updates+HenrikLindberg@puppet.com> wrote:\n\nHenrik Lindberg\n<https://puppet.atlassian.net/secure/ViewProfile.jspa?name=henrik.lindberg>\n*commented* on [image: New Feature] PDOC-171\n<https://puppet.atlassian.net/browse/PDOC-171>\n\nRe: generate the hiera keynames to use for parameterised classes\n<https://puppet.atlassian.net/browse/PDOC-171>\n\nWhen considering adding support for hiera bindings it is also of value to\nmake it possible to document default data bindings and lookup options. A\nmodule could for example come with lookup options configured for deep merge\netc for some parameters, and could have defaults bound in hiera (as opposed\nto defaults in manifests). The most elegant would be if PDOC could pick up\nthe information directly from hiera, but this gets complicated because\ninformation can come from any kind of backend. It is therefore best if this\nis documented in the puppet logic. If doing that, then there needs to be a\nstructured way to mark up a parameter with such information.\n[image: Add Comment]\n<https://puppet.atlassian.net/browse/PDOC-171#add-comment> Add Comment\n<https://puppet.atlassian.net/browse/PDOC-171#add-comment>\n\nThis message was sent by Atlassian JIRA (v6.4.14#64029-sha1:ae256fe)\n[image: Atlassian logo]\n", "created": "2017-08-03T18:51:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] How difficult would it be to just get defaults and not follow any logical paths? This is what is blocking us right now from putting all of our defaults in module data.\n\nAlso, is it actually a good idea to put all defaults in module data? This seems to be less readable and 'easy to use' for new users.", "created": "2019-02-06T12:19:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "Actually, thinking about this, it might be a LOT easier than going 'full Hiera':\n # If the hiera path has interpolation, the strings value becomes {{see in module}} data\n # If it does not, return the value\n\nThat should be it, right?", "created": "2019-02-06T13:15:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Applying heuristics like that would work - the documentation extraction would need to understand a hiera.yaml, understand if there is any interpolation in any layer, and if all layers are known data functions, further it must understand lookup options - if they are not, then it is not possible to statically compute the value that will be looked up.\n\nThe simple case: one level, one path pointing to a yaml file is doable - but then, must also look if the data is an alias, or contains interpolation. Information from lookup_options should also be taken into account since it is of interest to know if deep merge is turned on by the module's hiera data.\n\nSo, somewhat doable for the simplest case, but still quite a bit of work to get right.", "created": "2019-02-07T01:44:00.000000"}], "components": [], "created": "2017-08-02T20:46:00.000000", "creator": "557058:f950b51f-34da-4ab4-974c-82e6f4989984", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32af19a6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzfppz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Aug/17"}], "description": "It would be cool if puppet-strings could generate the keyname to use for hiera when documenting puppet classes.\n\nAt the moment parameters for say an {{motd}} class are documented like this:\n\n*Parameters:*\n* content (String) (defaults to: undef) \u2014  String to be used for motd\n* issue_content (String) (defaults to: undef) \u2014 String to be used for /etc/issue\n* issue_net_content (String) (defaults to: undef) \u2014 String to be used for /etc/issue.net identical_message (Boolean) (defaults to: false) \u2014 If true, use the main MOTD message for all messages unless overriden by issue_content and issue_net\n...\n\nI would like this to be enhanced with final name of the hiera key a user must add in order to set values, along the lines of:\n*Parameters:*\n* content (String) (defaults to: undef; hiera key motd::content) \u2014  String to be used for motd\n* issue_content (String) (defaults to: undef; hiera key motd::issue_content) \u2014 String to be used for /etc/issue\n* issue_net_content (String) (defaults to: undef; hiera key motd::issue_net_content) \u2014 String to be used for /etc/issue.net identical_message (Boolean) (defaults to: false) \u2014 If true, use the main MOTD message for all messages unless overriden by issue_content and issue_net\n\n*User benefit*\n* Impossible to make a typo - just copy and paste from the documentation\n* Encourages users to generate documentation, keep it updated and use it for reference\n* Makes it very obvious that automatic data binding is being used and how to use it\n* Improved efficiency from single step hiera keyname lookup - say you have a class {{profile::obisidian::client::oracle}} and parameter {{jdbc_options}} - computing the final key name for heira would typically be two copy and paste trips between windows, often with a single or triple colon used to interpolate the values due to user error.  If typing out class names manually there's a good chance of a hard to spot typo instead.  With the final keyname generated its just a single copy and paste job.\n* Removes the need for explicit hiera lookups in code as a way of mitigating the above\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32606", "fixedVersions": [], "id": "32606", "issueType": "New Feature", "key": "PDOC-171", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:f950b51f-34da-4ab4-974c-82e6f4989984", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "generate the hiera keynames to use for parameterised classes", "timeSpent": "PT0S", "updated": "2019-02-07T01:44:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c100c4a57610068e74585", "body": "In the meantime it would be very helpful if a puppet-strings gem was released which depends on rgen.", "created": "2017-09-07T03:53:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Ping [~accountid:557058:c7e2df03-377d-4bf0-9407-106b8483430d] - what is the right thing to do here so the dependencies work ok.", "created": "2017-09-07T09:19:00.000000"}, {"author": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd], not sure how to answer that. What dependencies? From Puppet? Or is the question how to create a Puppet Strings gem that depends on RGen? Confused...", "created": "2017-09-07T10:29:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "Right now we add rgen to our Gemfile if we need puppet-strings with Puppet 5 because puppet-strings does use it, but doesn't list it as a dependency. Until the dependency is no longer needed, it should be listed in puppet-strings dependencies.", "created": "2017-09-07T10:58:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "1.2.0 at least added the rgen dependency.", "created": "2018-03-01T04:37:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "If Puppet Strings wants to support both puppet  4 and 5 with the same version the puppet/strings combination will need RGen for as long as Puppet Strings supports puppet 4.", "created": "2018-03-01T14:15:00.000000"}, {"author": "623c100c4a57610068e74585", "body": "I have no problem with that. Now that the dependency is in the gemspec I can remove the manual specification from my gemfiles.", "created": "2018-03-01T14:41:00.000000"}], "components": [], "created": "2017-03-28T07:12:00.000000", "creator": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@777befd3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt3z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Sep/17"}], "description": "Starting with Puppet 5.0.0, the RGen gem is no longer used by Puppet. It should not be required by Puppet Strings.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32333", "fixedVersions": [], "id": "32333", "issueType": "Bug", "key": "PDOC-168", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "drop requirement for RGen gem for Puppet 5.0.0", "timeSpent": "PT0S", "updated": "2019-08-06T17:48:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-03-21T02:50:00.000000", "creator": "557058:1a0b4537-0255-4113-93e1-2a192bed4235", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6539aa2c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt3r:"}], "description": "I'm trying to add some custom documentation to my projects and tried adding my markdown documentation.\nThere are 2 problems about this (not sure if they're puppet strings related or yard related).\n\n1 - My main README.md file refer to other md file using [title](otherfile.md) syntax. It don't work (they are not translated). If i put the {file:otherfile.md title} syntax they work correctly but it's a pain because they will not display correctly into my gitlab environment.\n\n2 - When running a normal puppet strings run with the option \"--files docs/*.md\" to generate puppet and custom documentation puppet strings is not creating the file_list.html (and not putting the custom \"file\" link on the left tree). If i run puppet string without passing \".rb and .pp\" files but just the --files docs/*,md the file_type.html is created correctly.\nCommands that works (they will not create the custom doc): \n- rake strings:generate[\", false, false, markdown,,--files docs/*.md -r docs/README.md \"]\n- puppet strings (having --files *.md -r docs/README.md in .yardopts)\nCommand that don't work (don't create the file_type.html page):\n- rake strings:generate[\"site/**/*{.pp\\,.rb} manifests/site.pp, false, false, markdown\n- puppet strings generate site/profile/manifests/**/*.pp site/profile/functions/**/*.pp site/profile/manifests/**/**/*.pp\n\n", "environment": "RHEL 7\npuppet-agent-1.9.3-1.el7.x86_64\nyard (0.9.8)\npuppet-strings (1.1.0)\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32466", "fixedVersions": [], "id": "32466", "issueType": "Bug", "key": "PDOC-167", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:1a0b4537-0255-4113-93e1-2a192bed4235", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Problem with file managed with --files (in .yardocs or using rake task)", "timeSpent": "PT0S", "updated": "2019-08-06T17:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-03-16T16:09:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6194bd42"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcorr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_743188_*|*_6_*:*_1_*:*_0"}], "description": "Build and release a new version of strings, largely to ship PDOC-161 (add a summary tag)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32501", "fixedVersions": [], "id": "32501", "issueType": "Task", "key": "PDOC-166", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Blocker", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Duplicate", "resolutionDate": "2017-03-16T16:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Release new version of puppet-strings", "timeSpent": "PT0S", "updated": "2017-03-16T16:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-03-16T15:49:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5cbc166"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzcor3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_333755999_*|*_3_*:*_1_*:*_2716945_*|*_6_*:*_1_*:*_0"}], "description": "Skipping subtasks in favor or just commenting here.\n1. Is the code ready for release?\n\nCHANGELOG updated and gemspec version updated. Tests are all passing and all tickets for this release are resolved.\n\n2. Reconcile git commits and JIRA tickets\n\nAll commits have associated JIRA tickets (except maint commits).\n\n3. Is the Jira tidy-up done for this release and prepared for the next one?\n\nWe now have PDOC version 1.1.1 in JIRA.\n\nFilters:\nFixed in 1.1.0: https://puppet.atlassian.net/issues/?filter=25603\nIntroduced in 1.1.0: https://puppet.atlassian.net/issues/?filter=25604\n\n4. Prepare long form release notes:\n\nSubject: Announce: Strings 1.1.0 Released\n\nHello, all! Today we're releasing puppet-strings 1.1.0. This is a small release that includes two features: the new `summary` tag, and the ability to explicitly document the types of parameters in Puppet 4 code.\n\nFeatures:\n\n* The `summary` tag can be added to any code that puppet-strings supports. The recommended length limit for a summary is 140 characters. Warnings will be issued for strings longer than this limit.\n* Puppet 4 parameter types can now be (optionally) explicitly documented. Previously, this was not allowed because Puppet 4 parameter types can be automatically determined without extra documentation. However, users may desire to do so anyway for consistency. Strings will emit a warning if the documented type does not match the actual type. In such an event, the incorrect documented type will be ignored in favor of the real one. Note that this is purely optional - Strings will continue to automatically determine the types of Puppet 4 parameters without this documentation.\n\nNever used Strings? Check out our recent blog post to learn more! https://puppet.com/blog/using-puppet-strings-generate-great-documentation-puppet-modules\n\nThe ruby gem can be found here: https://rubygems.org/gems/puppet-strings\n\nFor installation and usage instructions, see https://github.com/puppetlabs/puppet-strings/blob/master/README.md.\n\nTo track issues related to this release or report issues, see the PDOC Jira project:\n\nJIRA Project: https://puppet.atlassian.net/browse/PDOC\nFixed in 1.1.0: https://puppet.atlassian.net/issues/?filter=25603\nIntroduced in 1.1.0: https://puppet.atlassian.net/issues/?filter=25604\n\n5. Tag the release\n\nTagged at commit eaa3d586590da9d17fc6549a1aa3160c067280b9.\n\n6. Build and smoke test gem\n\nSmoke tested on centos 7.\n\n7. Push tag to GitHub\n\nTag and gem pushed.\n\n8. Send out announcements\n\nAnnouncements sent to announce, users, and dev.\n\n9. Close all resolved tickets in JIRA.\n\nDone.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32404", "fixedVersions": ["PDOC 1.1.0"], "id": "32404", "issueType": "Task", "key": "PDOC-165", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2017-03-20T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Release puppet-strings 1.1.0", "timeSpent": "PT0S", "updated": "2017-03-20T13:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "This would be a major undertaking as simply turning HTML pages into PDF is not likely to produce a very pleasing result. At a minimum you would probably need a clickable PDF TOC.\n\nJust a thought: Related is also the possibility to generate UNIX man-pages which would work for those that live on a textual CLI.\n\nMaybe there is a reasonable intermediate mark-up format that could be used to feed into generators for both \"pure text\" (i.e. man-pages), as well as PDF?\n", "created": "2017-02-24T10:37:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "ping [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] [~accountid:623c08e1562ab90069f8aed4] [~accountid:62450221ad6b7e006aa4e34c]", "created": "2017-02-24T10:38:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "there is this thing for example: http://rtomayko.github.io/ronn/ronn.1", "created": "2017-02-24T10:41:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Well, I can definitely say we should not invest any further in Ronn, since it's abandonware based on multiple pieces of additional abandonware. \n\nBut it should be possible to build something that can make a mediocre PDF based on the JSON-with-markdown-fragments output we already have. And mediocre PDFs make the world go round, right? :D ", "created": "2017-03-30T15:51:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Ok, if that PDF gem is not something worth using, we could do a static markdown version. There are markdown to PDF tools out there if the desire is to have a PDF. Markdown could also pass as \"crappy plain text\".\n\nStill, the effort to produce reasonable quality markdown output is still quite substantial, and adds to what we need to maintain.\nAssigning this to [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] as I think this is a product/priority decision regarding how valuable this proposed feature is.", "created": "2017-03-31T04:19:00.000000"}, {"author": "557058:ddaa4b87-3b61-49bb-98f9-56fd02cdbb6b", "body": "if it's a choice between markdown and PDF, I'd choose markdown every time.", "created": "2017-03-31T11:35:00.000000"}, {"author": "557058:8b8ee68d-9213-4499-8e76-36a21cb10c37", "body": "The latex project has a vast amount of very powerfull typesetting tools to create exquisite looking pdfs with all of the bells and whistles you could possibly wish for. I think it should certainly get some consideration. ", "created": "2017-09-29T02:45:00.000000"}], "components": ["CLI", "UX"], "created": "2017-02-24T07:16:00.000000", "creator": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@77d43877"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzc27r:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Feb/17"}], "description": "It would be a great new feature of Puppet Strings if it could be used to generate a single PDF file documenting an entire module.  This would make great leave-behind documentation for consultants who are required to hand over static documentation at the end of engagements.  Of course, the HTML output is more useful but this would be a great addition for those who have no choice but to write reports for those who demand them.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32392", "fixedVersions": [], "id": "32392", "issueType": "New Feature", "key": "PDOC-164", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ba2d08f5-8947-446f-bada-55ecb351d6cc", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "PDF module documentation", "timeSpent": "PT0S", "updated": "2019-05-01T15:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:88257301-b238-491f-840a-7b39463c2b2d] try this: {{bundle exec puppet strings generate ./\\*\\*/\\*(.pp|.rb)}}. The search won't expand to all files in all subdirectories unless you include the {{**}}.\n\nEdit: hrm, Jira is messing with my formatting, should be good now.", "created": "2017-02-21T12:14:00.000000"}, {"author": "557058:88257301-b238-491f-840a-7b39463c2b2d", "body": "Thanks escaping * did the trick", "created": "2017-02-22T05:15:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Ah, good to hear! :D", "created": "2017-02-22T15:53:00.000000"}], "components": ["CLI"], "created": "2017-02-20T05:27:00.000000", "creator": "557058:88257301-b238-491f-840a-7b39463c2b2d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "aa"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7627a212"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbyaf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_210369250_*|*_6_*:*_1_*:*_0"}], "description": "I use this https://github.com/biemond/biemond-orawls/tree/puppet4 as source \n\nstrings does not generate pp from subfolders inside manifest dir\nbundle exec puppet strings generate ./**/*.pp\n\nbut when I do this \nexec puppet strings generate ./manifests/**/*.pp\nit only pickups everything except the manifest dir\n\n    puppet (4.9.2)\n      CFPropertyList (~> 2.2.6)\n      facter (> 2.0, < 4)\n      gettext-setup (>= 0.10, < 1)\n      hiera (>= 2.0, < 4)\n      json_pure (~> 1.8)\n      locale (~> 2.1)\n    puppet-strings (1.0.0)\n      yard (~> 0.9.5)", "environment": "mac", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32487", "fixedVersions": [], "id": "32487", "issueType": "Bug", "key": "PDOC-163", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:88257301-b238-491f-840a-7b39463c2b2d", "resolution": "Cannot Reproduce", "resolutionDate": "2017-02-22T15:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "failed to generate all docs when there are subfolders inside the manifest dir", "timeSpent": "PT0S", "updated": "2017-02-22T15:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:88257301-b238-491f-840a-7b39463c2b2d", "body": "duplicate of #PDOC-163", "created": "2017-02-20T05:30:00.000000"}], "components": ["CLI"], "created": "2017-02-20T05:21:00.000000", "creator": "557058:88257301-b238-491f-840a-7b39463c2b2d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2cdf40d8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbya7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_532410_*|*_6_*:*_1_*:*_0"}], "description": "Hi \n\nwhen I generate docs on https://github.com/biemond/biemond-orawls/tree/puppet4 based on this \nbundle exec puppet strings generate ./manifests/**/*.pp\nI will get all pp files from the subfolders but not from the manifest dir\n\nwhen I do this \nbundle exec puppet strings generate ./**/*.pp\nI will get all pp files from the subfolders but only from the manifest dir and not the subfolders\n\n    puppet (4.9.2)\n      CFPropertyList (~> 2.2.6)\n      facter (> 2.0, < 4)\n      gettext-setup (>= 0.10, < 1)\n      hiera (>= 2.0, < 4)\n      json_pure (~> 1.8)\n      locale (~> 2.1)\n    puppet-strings (1.0.0)\n      yard (~> 0.9.5)", "environment": "mac", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32540", "fixedVersions": [], "id": "32540", "issueType": "Bug", "key": "PDOC-162", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:88257301-b238-491f-840a-7b39463c2b2d", "resolution": "Duplicate", "resolutionDate": "2017-02-20T05:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "failed to generate all docs when there are subfolders inside the manifest dir", "timeSpent": "PT0S", "updated": "2017-02-20T05:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:b2a437da-24ad-4861-8fa8-5973b0d167ed", "body": "There's some additional discussion about this in the following Google Group thread:\nhttps://groups.google.com/a/puppet.com/forum/#!topic/cs-architecture/svLAQDD4x4s", "created": "2017-02-17T16:35:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "[~accountid:623cffe88d8b9c0068b93ebf], [~accountid:62450221ad6b7e006aa4e34c], [~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c]: any reasons why the proposed solution isn't the way to go?", "created": "2017-02-17T23:36:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "[~accountid:70121:daea3119-cdf4-43ae-bb73-2d9ef9d71335] asked me about this last week, and we discussed a range of options. As far as we could tell, there is no way to add tags without adding a few lines of ruby to the yard processor, therefore this is necessary.\n\nGiven the target group (VRA users and their role&profile classes) and purpose (UI specific markup), a tag along the lines of {{puppet.vra.description}} made the most sense.\n\nOther options discussed were\n\n* generic summary tag: does not really help roles & profiles", "created": "2017-02-20T01:12:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "Why wouldn't a generic summary tag be sufficient? If it's well-known and you add it to your role classes, then the VRA use case would be satisfied without, as far as I can tell, negatively impacting the same tag at the component module or profile class levels.", "created": "2017-02-20T09:39:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "a generic tag is ineffective from both ends of the problem:\n\n* role and profile classes (which seem to be the primary target here) are written specifically for VRA estates, a generic tag doesn't help.\n* In my experience UI-specific restrictions will be violated by innocent users of generic constructs, thereby leading to sub-optimal results (clipping, lack of information, etc).", "created": "2017-02-21T06:55:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "I chatted with [~accountid:557058:68216498-c6bf-4e8f-92c1-ac84887b7c02] and we decided that we *do* want a standard tag built-in so that multiple solutions can take advantage of the class short name. The burden of coping with the constraints of the tag will be on the consuming solution (VRA, Foreman, PE GUI eventually, etc.). For our part we'd want to evangelize its existence so that consuming solutions have content to take advantage of.", "created": "2017-03-14T15:28:00.000000"}, {"author": "70121:daea3119-cdf4-43ae-bb73-2d9ef9d71335", "body": "+1 to a tag called {{summary}} that will appear at least in the context of puppet classes, though I wouldn't be opposed to it showing up in the other types as well:\n\n{code}\n{\n \"puppet_classes\": [\n  ],\n  \"defined_types\": [\n  ],\n  \"resource_types\": [\n  ],\n  \"providers\": [\n  ],\n  \"puppet_functions\": [\n  ]\n}\n{code}\n", "created": "2017-03-14T18:30:00.000000"}], "components": [], "created": "2017-02-17T16:34:00.000000", "creator": "557058:b2a437da-24ad-4861-8fa8-5973b0d167ed", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@686fb943"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzby33:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Feb/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_333710025_*|*_1_*:*_1_*:*_2246324254_*|*_10007_*:*_1_*:*_80110962_*|*_5_*:*_1_*:*_2770785_*|*_6_*:*_1_*:*_0"}], "description": "*Use Case:* Vendors like VMware would like a way to discover a list of role classes along with a description of the class. Right now they can pull a class name, but there isn't a standard way to retrieve a short description. puppet-strings is used to document puppet files, but it's also a great way to get easily parseable metadata about a puppet file via the JSON output option(s).\n\n*The Issue:* You can get the name from puppet-strings, but puppet-strings (and YARD itself) doesn't have a simple tag for a short description. There is the generic docstring text, but it's freeform and can be multiple lines. It's not ideal.\n\n*Solution:* Create a new \"summary\" tag (similar to puppet.type.param) for storing a short description with a recommended limit of 140 characters. This field should show up in the JSON output. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32605", "fixedVersions": ["PDOC 1.1.0"], "id": "32605", "issueType": "Improvement", "key": "PDOC-161", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:b2a437da-24ad-4861-8fa8-5973b0d167ed", "resolution": "Fixed", "resolutionDate": "2017-03-20T12:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "As a developer I want to programmatically retrieve the name and short description from a puppet class", "timeSpent": "PT0S", "updated": "2017-03-20T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "One thing that complicates this is that other files may have cross references to the changed / added / removed files. So it becomes much more elaborate where it would need to generate all, and then compare what actually changed (except the timestamp). This unless there is some magic in yard that can do this.", "created": "2017-01-24T16:24:00.000000"}, {"author": "557058:724f8532-144f-4a06-830b-a614714244e4", "body": "How about if we just didn't add the date at all?  I've created a PR to do this:  https://github.com/puppetlabs/puppet-strings/pull/137\n\nOf course the file are all regenerated but with identical content, so only real changes will need to be committed to git.  I've been trying this out locally and it works quite nicely", "created": "2017-03-11T04:16:00.000000"}], "components": [], "created": "2017-01-23T16:25:00.000000", "creator": "557058:fc11868e-0146-4f3b-a79d-faf27cfd1154", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2313b16e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzbf5z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_38310196723_*|*_4_*:*_1_*:*_15474_*|*_5_*:*_2_*:*_12080"}], "description": "Running puppet strings generate <updated file> results in every file being updated with a new timestamp.\n\nI would like to be able to update docs only for changed files to remove checkins that have nothing other than updated timestamps.", "environment": "Puppet 4.7.0\nStrings 1.0.0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32332", "fixedVersions": [], "id": "32332", "issueType": "Bug", "key": "PDOC-160", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:fc11868e-0146-4f3b-a79d-faf27cfd1154", "resolution": "Fixed", "resolutionDate": "2018-04-12T03:09:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "strings should be able to process only updated files", "timeSpent": "PT0S", "updated": "2018-04-12T03:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "YARD's {{DisplayObjectCommand}} performs the lookup of an object from the URL path component and fails to URL-decode the object name to find it. This is only really an issue with Puppet Strings as it disables the normal namespacing of objects, so \"ntp::config\" is the full object name rather than \"config\" being namespaced under \"ntp\".\n\nYARD's serialisers perform URL-encoding on non-word characters, e.g. {{FileSystemSerializer#encode_path_components}} causing the path to contain \"_3A\" for a colon. I think this is probably only an issue when used with Puppet Strings as I can't think of a case where YARD would need URL encoding/decoding otherwise.\n\nHere's a temporary fix with a monkey patch to add in decoding of _3A: https://github.com/domcleal/puppet-strings/commit/a398e03493c0eea4dd1e30e85fab045bd106e18d", "created": "2017-01-17T01:39:00.000000"}], "components": [], "created": "2017-01-16T06:01:00.000000", "creator": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d0a1c4a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzkau7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_38952159480_*|*_10007_*:*_1_*:*_697319360_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_11655979"}], "description": "Serving documentation for modules that contain classes with \"::\" causes 404s when trying to access those docs through the sidebar.\n\nFor example with puppetlabs/ntp 6.0.0 and running {{puppet strings server}}, the HTML sidebar links to {{docs/ntp/puppet_classes/ntp_3A_3Ainstall}} but the class docs are actually available at {{docs/ntp/puppet_classes/ntp/install}}.\n\nLogs show:\n\n{noformat}\nlocalhost - - [16/Jan/2017:07:56:48 EST] \"GET /docs/ntp/puppet_classes/ntp_3A_3Ainstall HTTP/1.1\" 404 55\nhttp://localhost:8808/list/ntp/puppet_class -> /docs/ntp/puppet_classes/ntp_3A_3Ainstall\nlocalhost - - [16/Jan/2017:07:56:54 EST] \"GET /docs/ntp/puppet_classes/ntp/install HTTP/1.1\" 200 4048\n- -> /docs/ntp/puppet_classes/ntp/install\n{noformat}\n\nThe {{generate}} mode works correctly however. It generates files at the ntp_3A_3Ainstall.html location, which the sidebar links to:\n\nntp/doc/puppet_classes/ntp_3A_3Aconfig.html\nntp/doc/puppet_classes/ntp_3A_3Aservice.html\nntp/doc/puppet_classes/ntp_3A_3Ainstall.html\nntp/doc/puppet_classes/ntp.html\n\nThis only seems to affect the server mode.", "environment": "puppet-strings 1.0.0\nyard 0.9.5\npuppet 4.8.1", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32391", "fixedVersions": [], "id": "32391", "issueType": "Bug", "key": "PDOC-159", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Major", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "resolution": "Fixed", "resolutionDate": "2018-04-20T08:00:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Links to classes containing \"::\" broken in server HTML sidebar", "timeSpent": "PT0S", "updated": "2018-04-20T08:00:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:623a4744a95758006959fe55], another interesting suggestion. We are always accepting PRs! However, this may not be something that gets done by us in the near future.", "created": "2018-03-05T12:32:00.000000"}], "components": [], "created": "2017-01-13T11:40:00.000000", "creator": "623a4744a95758006959fe55", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@712c14a4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb7z3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}], "description": "When formatting, warnings are printed for missing `@param` tags out but the exit status of the `puppet strings` face seems to always be `0`.  It would be very useful to have a mode that disabled formatted output and makes warnings fatal (`exit  != 0`).  This would enable usage in a CI \"linting\" workflow to catch missing documentation for new parameters.", "environment": "puppet-strings-1.0.0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32403", "fixedVersions": [], "id": "32403", "issueType": "New Feature", "key": "PDOC-158", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4744a95758006959fe55", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "linting of missing @params", "timeSpent": "PT0S", "updated": "2018-03-05T12:32:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Would be nifty. Goes in the nice-to-have bin.", "created": "2018-03-05T12:30:00.000000"}], "components": [], "created": "2017-01-13T11:35:00.000000", "creator": "623a4744a95758006959fe55", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c54cec0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb7yv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}], "description": "The HTML output does not include anchors for ``@param`` entries.  It is incredibly convenient to be able to share a link directly to a parameter, which is in commonly done with GH rendered markdown README's for module documentation.", "environment": "puppet-strings-1.0.0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32331", "fixedVersions": [], "id": "32331", "issueType": "New Feature", "key": "PDOC-157", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4744a95758006959fe55", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "HTML anchors for parameters", "timeSpent": "PT0S", "updated": "2018-03-05T12:30:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "I also just discovered that our handling of @api (in HTML) is buggy for functions. It only works for functions with multiple dispatches, and thus {{overload}} tags, i.e, this kind of works:\n\n{code}\n# Subtracts two things.\nPuppet::Functions.create_function(:subtract) do\n  # @api private\n  dispatch :subtract_ints do\n  ...\n  end\n\n  dispatch :subtract_arrays do\n  ...\n  end\n\n  def subtract_ints(x, y)\n    x - y\n  end\n\n  def subtract_arrays(x, y)\n    x - y\n  end\nend\n{code}\n\n... but this doesn't:\n\n{code}\n# Subtracts two things.\nPuppet::Functions.create_function(:subtract) do\n  # @api private\n  dispatch :subtract_ints do\n  ...\n  end\n\n  def subtract_ints(x, y)\n    x - y\n  end\nend\n{code}\n\nI believe this is because in the former, the docstring is wrapped in an {{overload}} tag which has its own template at {{lib/puppet-strings/yard/templates/default/tags/html/puppet_overload.erb}}. This results in the overload having the bright warning in the HTML output, but only the overload which includes the tag. I *think* the presence of {{@api private}} for any overload should signify that they are all private, and the warning should be displayed above with the function overview.\n\nNote that the JSON output always includes the tag, so the scope of this change is limited to HTML output.", "created": "2017-01-11T13:49:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Users can now apply the @api tag to classes and defined types and see results in the generated markdown. Not sure about generated HTML.", "created": "2018-03-05T12:30:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "As Eric mentioned, this is now in place and markdown output has been updated. Still need to update HTML output but I created a separate issue to track that: PDOC-278", "created": "2019-05-02T14:14:00.000000"}], "components": [], "created": "2017-01-11T13:17:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@587aa1e0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzb6kf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_36112369541_*|*_5_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_36549834264"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32498", "fixedVersions": [], "id": "32498", "issueType": "Improvement", "key": "PDOC-156", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2019-05-02T14:14:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Support @api tag for classes (in addition to functions)", "timeSpent": "PT0S", "updated": "2019-05-02T14:14:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2017-01-10T11:50:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The following should run through strings correctly:\n{code}\n# @param [Regexp] param An example parameter.\nclass base(Regexp $param = /foobar/) {\n}\n{code}\n\nThe following should issue a warning:\n{code}\n# @param [String] param An example parameter.\nclass base(Regexp $param = /foobar/) {\n}\n{code}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5255bdae"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "QA Risk Assessment Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "covered by unit tests"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymeen:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7815_*|*_10007_*:*_1_*:*_264098377_*|*_3_*:*_1_*:*_1181585_*|*_5_*:*_1_*:*_5697868562_*|*_6_*:*_1_*:*_0"}], "description": "Currently, you may not document the type of a parameter such as the following in puppet 4 code:\n\n{code}\n# @param [Regexp] param An example parameter.\nclass base(Regexp $param = /foobar/) {\n}\n{code}\n\nStrings emits a warning. However, users should have the option of adding this documentation. If the documented type differs from the actual type, strings should warn.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32495", "fixedVersions": ["PDOC 1.1.0"], "id": "32495", "issueType": "Improvement", "key": "PDOC-155", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2017-01-13T13:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should allow parameter types to be documented in Puppet 4 code", "timeSpent": "PT0S", "updated": "2017-03-20T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Agree.\nShould handle both the autoloaded data types as well as those defined locally in 4.x ruby functions. For the 4.x ruby functions the documentation should be kept on the function's page as the types are only valid locally for that function.", "created": "2016-12-20T06:33:00.000000"}], "components": ["UX"], "created": "2016-12-19T10:41:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7d6d2c92"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzatrz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "20/Dec/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_38108737038_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_10077"}], "description": "Presently there appears to be no provision or guidance on documenting custom Data Types in a way that Strings can automatically process.\n\nIt would be excellent to be able to document our Data Types as we create them moving forward.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32330", "fixedVersions": [], "id": "32330", "issueType": "Improvement", "key": "PDOC-154", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Duplicate", "resolutionDate": "2018-03-05T12:27:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should support documenting Data Types", "timeSpent": "PT0S", "updated": "2018-03-05T12:27:00.000000", "votes": "5", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "As a quick note, I also realized that this issue applies to the {{$name}} parameter in Defined Types", "created": "2016-12-12T12:15:00.000000"}, {"author": "557058:8b6a5143-cd16-434d-9c56-e1f3b642a830", "body": "(y)  \n\nI think the inability to document {{$name}} bothers me the most\u2015it's a required parameter in every {{define\\{\\}}} and ought to be documentable.", "created": "2017-01-26T18:36:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "Is this looking to get fixed at any point? As [~accountid:557058:8b6a5143-cd16-434d-9c56-e1f3b642a830] mentioned, the inability to document {{$name}} without warnings is not good.", "created": "2017-08-01T09:10:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Hm, isn't {{$name}} an output parameter (after mangling etc) and {{$title}} the given id/name in the manifest? If so, it shouldn't it be the {{$title}} that you want to document. For user defined resources this may not matter since there is no mangling/munging taking place. PDOC should probably consider all meta parameters as being available for documentation.", "created": "2017-08-02T09:18:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] From the **user** point of view, {{$name}} is more commonly used that {{$title}} so it's what I would usually put in my docs.\n\nI also need to be able to document arbitrary variables of import that might be useful to users.\n\nI know that this is not a usual use case, but {{params.pp}} is going to be around until early Puppet 4 is completely dead (so 2 more years or so?).", "created": "2017-08-02T10:50:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "We are currently looking to remove this warning. PDOC-192", "created": "2018-03-05T12:25:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This warning has been removed in 2.0.0 (unreleased). New ticket created for other request PDOC-236", "created": "2018-04-12T07:25:00.000000"}], "components": ["DOCS"], "created": "2016-12-12T11:11:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a416a1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzannj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_38711635672_*|*_5_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_3261589823"}], "description": "The following currently throws a {{warning}}:\n\n{code}\n# @param name [String]\ndefine foo {\n  notify { 'My name is:' message => $name }\n}\n{code}\n\nSince {{$name}} is a **required** parameter for all defined types, we should be able to document it as a parameter.\n\nAlso, Consider the following, commonly used, {{params.pp}}\n\n{code}\nfoo::params {\n  $bar = 'baz'\n}\n{code}\n\nIn this case, I would like to be able to declare that the {{$foo::params::bar}} variable is available for use but it is not a {{parameter}}.\n\nIdeally, this would be documented with the {{@!accessor [r]}} method, but, when I attempted to use this, an error was thrown.\n\nPresently, I'll continue using {{@param}} but it is inherently incorrect and a more correct alternative should be supplied.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32537", "fixedVersions": [], "id": "32537", "issueType": "Bug", "key": "PDOC-153", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Fixed", "resolutionDate": "2018-04-12T07:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Users should be able to document the $name parameter of defined types", "timeSpent": "PT0S", "updated": "2018-04-12T07:25:00.000000", "votes": "8", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Not sure I follow the reasoning here - if you can set the parameters from outside, then the construct is not really private is it?\nThere is still value in producing documentation of private elements of the language for the purpose of helping those that maintain a module.\n\nNote that there will be proper support for private classes built into the puppet language. When that has been added, the {{@private}} yard tag can be inferred for those classes. Don't think it is worth digging out the use of {{assert_private}} as that will be replaced by the support in the language itself.", "created": "2016-12-12T05:39:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] You bring up a good point. Count this as my official vote toward adding a {{protected}} set of classes.\n\nI use {{assert_private()}} to ensure that users can't include classes that won't work without other parts of the module. This way I can strictly control, from the top level, how users should be using the module and it lets me logically split up my module into components.\n\nHowever, I do **not** want to have to repeat all 5 million parameters at the top level, that defeats a lot of the reason that I'm splitting things off into sub-classes.\n\nWhat I want is what I currently have, which I guess you could call {{protected}}, where I can control the class acesss and inclusion order and I can then allow the setting of various less-used parameters via data binding.\n\nAlternatively, classes could be {{private}} with parameters having a flag to be {{public}} or something like that. That said, my current parameters are already going over 140 characters and I'm starting to think that {{.h}} files are about to come back into style.", "created": "2016-12-12T06:56:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "What would {{protected}} mean? I am guessing that you cannot include them (unless from within the module), but you can set parameters via APL ?\nThe semantics for {{private}} has not been determined yet (we only have the keyword reserved at this point) - maybe that should mean that you are allowed to set parameters via APL since the module can, if it does not want to allow that, give all parameters explicitly.", "created": "2016-12-12T08:27:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Yes, this is exactly what I would need. I would expect my data bindings to work on {{protected}} classes but not {{private}} classes. Also, probably 99% of my classes (and probably everyone else's) would be {{protected}} because nobody wants to do the work to make sure that all parameters are exposed everywhere, nor do we want to deconflict the {{thing}} parameter from 4 different subclasses. That way lies reverting to the madness of {{params.pp}}.", "created": "2016-12-12T08:31:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "We should have this discussion in PUP-523 as this ticket (PDOC-152) is about how the outcome of that ticket would look like when documented.", "created": "2016-12-12T08:58:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "marked as blocked by PUP-523", "created": "2016-12-12T09:01:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "Discovered today that the {{@private}} tag is non-functionional in puppet classes/defines. It would be nice to somehow specify that a class/define is only thought to be used inside the module and that it is not a public interface (I'm thinking of the {{module::parms}}, {{module::install}}, {{module::service}} classes). Right now I added a \"THIS IS A PRIVATE CLASS\" heading to make it visible.", "created": "2017-01-13T12:30:00.000000"}, {"author": "5ac72d915fe4b660cda6eee6", "body": "I just stumbled across this issue because I wondered why the @private tag does not work. \nIs it really necessary have this blocked by the language implementation. It would be beneficial to have a generic way to document that a class/define is not meant to be used independent of actually enforcing it.\n\nAlso the readme simply says:\n??For a complete list of tags, see the YARD Tags Overview.?? and ??You can also include any number of YARD tags that hold semantic metadata for various aspects of the code.??\nwith no hint that only a subset of the tags is supported", "created": "2017-04-11T11:45:00.000000"}, {"author": "557058:8b6a5143-cd16-434d-9c56-e1f3b642a830", "body": "As a >3 year update to this discussion:\n * [@api private|https://puppet.com/docs/puppet/5.5/puppet_strings.html#available-strings-tags] has been available in Strings for some time to mark \"module elements\" like classes as private\n * PUP-523 was just transitioned from \"Designing\" back to \"Open,\" so the introduction of a {{protected}} keyword seems unlikely in the foreseeable future.", "created": "2020-05-06T10:07:00.000000"}], "components": ["DOCS"], "created": "2016-12-11T11:11:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@463c3ca5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzang7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Dec/16"}], "description": "With the advent of {{contain}} and {{assert_private()}} a consistent group of {{private}} classes have arisen.\n\nHowever, unlike many languages, Puppet private classes need to be documented and exposed to the user in case they want to set some of the more esoteric parameters of the classes.\n\nTo this end, I would like to recommend that a {{Private Puppet Classes}} be added and that the {{@private}} YARD tag be accepted to place classes into this group.\n\nAlternatively, detection of {{assert_private()}} could be used to note that a class is private to a module.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32493", "fixedVersions": [], "id": "32493", "issueType": "New Feature", "key": "PDOC-152", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "status": "Needs Information", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should support the documentation of private classes", "timeSpent": "PT0S", "updated": "2021-03-10T13:57:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "PDOC-213", "created": "2018-03-05T12:24:00.000000"}], "components": ["DOCS"], "created": "2016-12-11T11:09:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@cc64f79"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzanfz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_38798099542_*|*_6_*:*_1_*:*_0"}], "description": "The {{@note}} Tag would be extremely useful for adding notes to the top of the rendered pages.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32465", "fixedVersions": [], "id": "32465", "issueType": "New Feature", "key": "PDOC-151", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Duplicate", "resolutionDate": "2018-03-05T12:24:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should support the @note Tag", "timeSpent": "PT0S", "updated": "2018-03-05T12:24:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a] it sounds like you may be talking about this issue which I raised against YARD: https://github.com/lsegal/yard/issues/1032. Does that look right?\n\nIt may be an issue with redcarpet, our markdown processing library. YARD delegates rendering markup to HTML to the markdown library, so the issue may be there.", "created": "2016-12-07T14:54:00.000000"}, {"author": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "body": "That is definitely very similar, if not the same, issue I'm seeing with the README markdown not being properly parsed/processed into HTML.\n\nI can see if something is open with the redcarpet project if you haven't already created one", "created": "2016-12-12T10:48:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a] This is still an issue, though not necessarily a bug. We would need puppet-strings to start pulling in other markdown files _or_ link out to github for things like CONTRIBUTING or MAINTAINERS, etc. Thoughts there? If someone is viewing the strings documentation, would they also want to see the contributing docs? Or would that be someone who is already on the github ui?", "created": "2018-04-12T02:30:00.000000"}], "components": [], "created": "2016-11-29T16:21:00.000000", "creator": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@215adbc4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt3j:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Dec/16"}], "description": "When Puppet Strings turns the README.md into an HTML document, I have found that:\n\n# Markdown anchors are not properly converted and don't actually go anywhere when clicked.\n# Links to other Markdown files are converted to HTML expecting the referenced files to also have been converted into yardoc HTML, however puppet-strings is only aware of the README.md, not any other markdown files in the root of the repository and as such you end up with a link to a 404 message in the finished yardoc page.\n\nExample: \n\ndhollinger/autofs-puppet README references a CONTRIBUTING.md file for contribution guidelines. Puppet Strings sees that link and creates an HREF to this URL: \n\nhttps://dhollinger.github.io/autofs-puppet/CONTRIBUTING.md.\n\nMy guess is that it sees the github flavored markdown \"[CONTRIBUTING.md](CONTRIBUTING.md)\" and converts that directly to the the URL seen above without validating that an HTML or Markdown file exists in that path.\n\n\nNot sure if this is an issue related to the conversion of github flavored markdown to HTML or not, but I figured it'd be easiest to start the troubleshooting process here.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32390", "fixedVersions": [], "id": "32390", "issueType": "Bug", "key": "PDOC-150", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:ede431de-1cf3-4b55-8994-7e87bbe1f36a", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "README links broken after being HTMLfied", "timeSpent": "PT0S", "updated": "2019-08-06T17:49:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Duplicate of DOCUMENT-597 (my bad!). Advice to use Strings has been added to the Style Guide, with a reference to the Puppet Strings docs. The style guide is not the right place for the instructions, despite my earlier comment.", "created": "2017-01-05T11:16:00.000000"}], "components": ["DOCS"], "created": "2016-11-28T13:11:00.000000", "creator": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6e7a0832"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzadmv:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_53017_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_3276241621"}], "description": "Style Guide: Replace documentation section and add in \"how to doc your code with Strings,\" from README at least)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32535", "fixedVersions": [], "id": "32535", "issueType": "Sub-task", "key": "PDOC-149", "labels": [], "originalEstimate": "PT0S", "parent": "32485", "parentSummary": "Update module-related docs for Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "resolution": "Duplicate", "resolutionDate": "2017-01-05T11:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Style Guide: add Strings info", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Documentation section added that points to module_documentation.html and the Language Style Guide.", "created": "2017-03-01T16:11:00.000000"}], "components": ["DOCS"], "created": "2016-11-28T13:10:00.000000", "creator": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7acbd8cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzadmf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_120726_*|*_5_*:*_1_*:*_32213020479_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_8045958151"}], "description": "BGTM: https://docs.puppet.com/guides/module_guides/bgtm.html (doesn't talk about docs, but should mention and reference strings as part of code)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32463", "fixedVersions": [], "id": "32463", "issueType": "Sub-task", "key": "PDOC-148", "labels": [], "originalEstimate": "PT0S", "parent": "32485", "parentSummary": "Update module-related docs for Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "resolution": "Fixed", "resolutionDate": "2017-03-01T16:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "add Strings info to BGtM", "timeSpent": "PT0S", "updated": "2018-03-09T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [], "components": ["DOCS"], "created": "2016-11-28T13:09:00.000000", "creator": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3e1d1f45"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzadm7:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_157862_*|*_5_*:*_1_*:*_33934350311_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_6324652162"}], "description": "Revise module README template: https://docs.puppet.com/puppet/latest/reference/READMEtemplate.txt", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32438", "fixedVersions": [], "id": "32438", "issueType": "Sub-task", "key": "PDOC-147", "labels": [], "originalEstimate": "PT0S", "parent": "32485", "parentSummary": "Update module-related docs for Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "resolution": "Fixed", "resolutionDate": "2017-02-09T18:03:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Revise module README template", "timeSpent": "PT0S", "updated": "2018-03-09T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [], "components": ["DOCS"], "created": "2016-11-28T13:08:00.000000", "creator": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@63cf3083"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzadlz:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_196461_*|*_5_*:*_1_*:*_48187803937_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_6324719238"}], "environment": "Rewrite Documenting Modules page: https://docs.puppet.com/puppet/latest/reference/modules_documentation.html", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32604", "fixedVersions": [], "id": "32604", "issueType": "Sub-task", "key": "PDOC-146", "labels": [], "originalEstimate": "PT0S", "parent": "32485", "parentSummary": "Update module-related docs for Strings", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "resolution": "Done", "resolutionDate": "2018-08-21T12:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Rewrite Documenting Modules page", "timeSpent": "PT0S", "updated": "2018-08-21T12:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Resolving this as all the subtasks are done. Hooray!", "created": "2017-04-25T10:54:00.000000"}], "components": ["DOCS"], "created": "2016-11-28T13:08:00.000000", "creator": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* "}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d9d7fa"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Needs Assessment"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtpz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_6301045156_*|*_3_*:*_1_*:*_6474509665_*|*_5_*:*_1_*:*_27483690513_*|*_6_*:*_1_*:*_0"}], "description": "* Rewrite Documenting Modules page: https://docs.puppet.com/puppet/latest/reference/modules_documentation.html\n* Revise module README template: https://docs.puppet.com/puppet/latest/reference/READMEtemplate.txt\n* Add revised README template to pmt skeleton\n* BGTM: https://docs.puppet.com/guides/module_guides/bgtm.html (doesn't talk about docs, but should mention and reference strings as part of code)\n* -Style Guide: Replace documentation section and add in \"how to doc your code with Strings, from README at least)-", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32485", "fixedVersions": [], "id": "32485", "issueType": "New Feature", "key": "PDOC-145", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "resolution": "Fixed", "resolutionDate": "2017-04-25T10:54:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Update module-related docs for Strings", "timeSpent": "PT0S", "updated": "2018-03-09T12:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-11-23T14:17:00.000000", "creator": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "* pre-suite can install deps and puppet-strings\n* acceptance suite can run "}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b635531"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Automate"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymd3r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_65375409_*|*_1_*:*_1_*:*_5277033898_*|*_10007_*:*_1_*:*_1756377_*|*_3_*:*_1_*:*_1215009263_*|*_5_*:*_1_*:*_3542360584_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32482", "fixedVersions": ["PDOC 1.1.0"], "id": "32482", "issueType": "Task", "key": "PDOC-144", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "resolution": "Fixed", "resolutionDate": "2017-02-07T12:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "acceptance: fix windows pre-suite", "timeSpent": "PT0S", "updated": "2017-03-20T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "62450221ad6b7e006aa4e34c", "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "I can fit this work into next sprint, but this also depends on [~accountid:62450221ad6b7e006aa4e34c] and/or [~accountid:557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715] having the bandwidth to get me predoc information.", "created": "2016-11-30T12:49:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "[~accountid:62450221ad6b7e006aa4e34c], poke at this and see if it's complicated or easy?", "created": "2016-11-30T14:32:00.000000"}], "components": ["DOCS"], "created": "2016-11-23T13:59:00.000000", "creator": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@353dd8de"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623e796e8d8b9c0068b9f467"}, {"fieldName": "QA Risk Assessment", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "No Action"}, {"fieldName": "QA Risk Assessment Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "docs"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzacov:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_7975_*|*_10007_*:*_1_*:*_3324134_*|*_3_*:*_1_*:*_88778546_*|*_5_*:*_1_*:*_9327577057_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_682981922"}], "description": "From GitHub:\n\ner0ck:\ndoes this work in windows? should we provide instructions there?\nwhopper:\nIt wouldn't work in Windows, and we probably should have instructions here. It's a small use case, as you'd only do this if you were authoring a module on Windows (since windows masters aren't supported, so you wouldn't be installing a bunch of modules on a windows machine). Still, some people do write modules in Windows.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32460", "fixedVersions": ["PDOC 1.1.0"], "id": "32460", "issueType": "Bug", "key": "PDOC-143", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "resolution": "Fixed", "resolutionDate": "2016-12-02T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add Windows information to Strings README", "timeSpent": "PT0S", "updated": "2017-03-20T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Puppet Strings does not currently support references to Puppet defined elements. We need to look into how that can be done so that Yard can differentiate if a name used as a reference is to a named thing in the Puppet namespace or a name in the Ruby namespace.", "created": "2016-11-22T06:19:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "A workaround for this would be {my_module::defined_type my_module::defined_type}. Unfortunately, this probably wont get worked on in the near-term. Feel free to submit a PR on GitHub or re-open this issue if it becomes a blocking issue for you.", "created": "2018-04-12T08:00:00.000000"}], "components": [], "created": "2016-11-22T00:50:00.000000", "creator": "557058:df8b6625-c029-4721-9f26-d07a22905a5a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@23675556"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hzabbz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_40476672815_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_3263919625"}], "description": "I need to reference a defined type in my documentation.\n\nThe following code works for a class :\n\n{my_module::my_class}\n\nI want to have the same behavior for a defined type but the output is wrong.", "environment": "RHEL 7.3\nPuppet 4.7.0\nRuby 2.0\npuppet-strings 0.99.0", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32603", "fixedVersions": [], "id": "32603", "issueType": "New Feature", "key": "PDOC-142", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:df8b6625-c029-4721-9f26-d07a22905a5a", "resolution": "Won't Do", "resolutionDate": "2018-04-12T08:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Reference to defined type doesn't work", "timeSpent": "PT0S", "updated": "2018-04-12T08:00:00.000000", "votes": "4", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] any ideas on how this might be accomplished?", "created": "2018-03-05T12:21:00.000000"}], "components": [], "created": "2016-11-18T12:45:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2f11d1d9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtmv:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32480", "fixedVersions": [], "id": "32480", "issueType": "Story", "key": "PDOC-141", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "status": "Open", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Measurement of strings adoption", "timeSpent": "PT0S", "updated": "2019-05-02T14:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "this would be very nice! just converted voxpupuli/selinux to use puppet-strings documentation. Right now it's served from GH Pages via https://voxpupuli.org/puppet-selinux from the master-branch docs/ . But having it on the forge would even be better. ", "created": "2017-01-13T12:09:00.000000"}, {"author": "557058:dce8a3bd-52a4-4c8d-a974-0f0aacd00e53", "body": "Puppet strings as a service (PDOC-104) is IMHO related when not even a duplication to having it on the forge. ", "created": "2017-01-13T12:13:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This work is being tracked in PF-1437", "created": "2018-01-24T15:20:00.000000"}], "components": [], "created": "2016-11-18T12:45:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@11946791"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtpr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37334112158_*|*_6_*:*_1_*:*_0"}], "description": "Probably in the form of a \"references\" tab or something that displays the JSON output of strings.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32533", "fixedVersions": [], "id": "32533", "issueType": "Story", "key": "PDOC-140", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Duplicate", "resolutionDate": "2018-01-24T15:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings-generated content on the Forge", "timeSpent": "PT0S", "updated": "2018-02-08T11:38:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "The discussion around module scoring is already pretty heated in terms of what to use and what not to use. I don't think we're looking at revamping scoring any time in the near future. If we do get around to talking about scoring again, we can evaluate Strings' inclusion at that time.", "created": "2018-04-12T03:16:00.000000"}], "components": [], "created": "2016-11-18T12:42:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@777d553c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-98"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtpj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Apr/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_44026479667_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Puppet Strings Maintenance", "estimate": "PT0S", "externalId": "32491", "fixedVersions": [], "id": "32491", "issueType": "Story", "key": "PDOC-139", "labels": [], "originalEstimate": "PT0S", "parent": "32541", "parentSummary": "Puppet Strings Maintenance", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Won't Do", "resolutionDate": "2018-04-12T03:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Use strings for module scoring", "timeSpent": "PT0S", "updated": "2018-04-12T03:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] is this a blocker for the release? And did we decide how we wanted to do this? (Delete current strings module on forge, replace with stub module that points to the gem. maybe?)\n\nEdit: actually, I'm going to assume it doesn't block the release since the forge page is already out of date with 0.99.0. I'm going to release 1.0.0 today and then work on getting some help updating the forge page.", "created": "2016-11-28T11:31:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Just kidding, with Jesse's help I figured out how to do this. For future reference, the preferred way to deprecate a module on the forge is as follows.\n\nDownload the tarball. Replace the README with a note saying that the module is deprecated and where to find it now. Update the module metadata.json to have a version of 999.999.999, and add \"[deprecated]\" to the beginning of the summary. Then, push the module to the forge.\n\nSee https://forge.puppet.com/puppetlabs/strings.", "created": "2016-11-28T12:43:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-11-18T12:39:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@60e5eb9a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtrb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_864312541_*|*_5_*:*_1_*:*_5836876_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32458", "fixedVersions": ["PDOC 1.0.0"], "id": "32458", "issueType": "Story", "key": "PDOC-138", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Fixed", "resolutionDate": "2016-11-28T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Update strings forge page to point to current", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "62450221ad6b7e006aa4e34c", "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Skipping subtasks in favor or just commenting here.\n\n1. Is the code ready for release?\n\nChangelog entry added for 1.0.0 and version bumped in the gemspec. Tests are all passing, and all tickets are resolved for this release. See https://puppet.atlassian.net/issues/?filter=23607.\n\n2. Reconcile git commits and JIRA tickets\n\nAll commits have associated JIRA tickets (except maint commits).\n\n3. Is the Jira tidy-up done for this release and prepared for the next one?\n\nWe now have PDOC version 1.0.1 in JIRA.\n\nFilters:\nFixed in 1.0.0: https://puppet.atlassian.net/issues/?filter=23607\nIntroduced in 1.0.0: https://puppet.atlassian.net/issues/?filter=23606\n\n4. Prepare long form release notes:\n\nSubject:  Announce: Strings 1.0.0 Released!\n\nBody:\n\nHello, all! Today we're happy to announce the release of puppet-strings 1.0.0! For those unfamiliar with the project, Strings is a YARD-based documentation tool for Puppet extensions written in Puppet and Ruby. Given some simple in-code comments containing YARD tags, it will generate consistent HTML or JSON documentation for all of your Puppet 3x/4x API functions, Puppet language functions, Ruby classes, Ruby methods, types, and providers.\n\nThis release mainly includes minor bug based on feedback from the recent 0.99.0 release. We also slightly modified the JSON schema for Puppet functions (see below).\n\nFeatures:\n- The JSON schema for Puppet functions has been altered to include a new 'signatures' top-level key (PDOC-125)\n    - Includes information about all function signatures (overloads). Existing overload key format has been preserved.\n- Reworked README for enhanced clarity (PDOC-133)\n\nBug fixes:\n- Fixed an issue where the search box in the code navigator overlapped list items below it (PDOC-93)\n- Strings can now handle multiple `defaultfor` calls in Puppet providers (PDOC-95)\n- Fixed an issue preventing the generated \\_index.html file from being uploaded to GitHub pages via the gh_pages task (PDOC-120)\n- Fixed several issues with String's handling of Puppet 3.x and 4.x function return types (PDOC-135), (PDOC-136)\n- Fixed an issue where String's didn't properly parse overloads if no summary description was provided (PDOC-129)\n- Strings now correctly handles Puppet 3.x functions when the `newfunction` call is on a newline (PDOC-122)\n- Fixed an issue where certain Ruby string constructs were incompletely stripped from some docstrings (PDOC-126)\n- Hanging indents from type feature descriptions are now properly stripped (PDOC-127)\n\nNever used Strings? Check out our recent blog post to learn more! https://puppet.com/blog/using-puppet-strings-generate-great-documentation-puppet-modules\n\nThe ruby gem can be found here: https://rubygems.org/gems/puppet-strings\n\nFor installation and usage instructions, see https://github.com/puppetlabs/puppet-strings/blob/master/README.md.\n\nTo track issues related to this release or report issues, see the PDOC Jira project:\n\n- JIRA Project: https://puppet.atlassian.net/browse/PDOC\n\n- Fixed for 1.0.0: https://puppet.atlassian.net/issues/?filter=23607\n- Introduced in 1.0.0: https://puppet.atlassian.net/issues/?filter=23606\n\n", "created": "2016-11-28T13:33:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "5. Tag the release\n\nTagged 1.0.0 at 1bd8575acb82d283412228516a6aeeb0e0259bf8\n\n6. Build and smoke test gem\n\nBuilt gem and tested on Centos 7 by running against puppetlabs-apache with FOSS puppet-agent latest.\n\n7. Push tag to GitHub\n\nTag pushed and gem pushed.\n\n8. Send out announcements\n\nAnnouncements sent to announce, dev and users mailing lists.\n\n9. Close all resolved tickets in JIRA.\n\nDone.", "created": "2016-11-28T14:22:00.000000"}], "components": [], "created": "2016-11-16T15:26:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@668b72f9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza69r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1022533115_*|*_3_*:*_1_*:*_10269230_*|*_5_*:*_1_*:*_110392_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32329", "fixedVersions": ["PDOC 1.0.0"], "id": "32329", "issueType": "Task", "key": "PDOC-137", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-11-28T14:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Release puppet-strings 1.0.0", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-11-10T14:53:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Given the following function, Strings should recognize that the function returns a string without having to add {{[String]}} to the {{@return}} tag:\n\n{code}\nfunction example(String $name) >> String {\n\"hello\"\n}\n{code}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@339bdf68"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza28n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Puppet 4.8 added the ability to define puppet language functions with return types (PUP-5623). This change updates strings to recognize those return types and automatically inject them into the documentation for the function."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_6681425_*|*_1_*:*_1_*:*_79876116_*|*_10007_*:*_2_*:*_251938157_*|*_3_*:*_2_*:*_6169535_*|*_5_*:*_1_*:*_1049144070_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_159464560"}], "description": "{code}\nfunction example(String $name) >> String {\n\"hello\"\n}\n{code}\n\nIn this example, {{>> String}} says that this function returns a string. Currently, Strings ignores this which requires the user to document the return type with the {{@return}} tag.", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32488", "fixedVersions": ["PDOC 1.0.0"], "id": "32488", "issueType": "Bug", "key": "PDOC-136", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-11-16T10:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings doesn't recognize `>> Type` syntax for return type of puppet language functions", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-11-10T14:45:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Given the following function, strings should correctly identify that the 'subtract_ints` overload returns type 'Numeric'.\n\n{code}\n# Subtracts two things.\nPuppet::Functions.create_function(:subtract) do\n  # @param x The first integer.\n  # @param y The second integer.\n  # @return Returns x - y.\n  # @example Subtracting two integers.\n  #   subtract(5, 1) => 4\n  dispatch :subtract_ints do\n    param 'Integer', :x\n    param 'Integer', :y\n    return_type 'Numeric'\n  end\n\n  def subtract_ints(x, y)\n    x - y\n  end\nend\n{code}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@43aa62b6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza28f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This change updates strings to recognize calls to the 'return_type' method within puppet 4.x function dispatches. This information is automatically included in the documentation for the function."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_6685496_*|*_1_*:*_1_*:*_4437414_*|*_10007_*:*_2_*:*_333731233_*|*_3_*:*_1_*:*_294944_*|*_5_*:*_1_*:*_1049502393_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_159107793"}], "description": "Puppet 4.x API functions can include a {{return_type 'blah'}} in each of their dispatches. Strings should use this to document the return type for the overload rather than requiring the type to be documented in the {{@return}} tag. Example:\n\n{code}\n# Subtracts two things.\nPuppet::Functions.create_function(:subtract) do\n  # @param x The first integer.\n  # @param y The second integer.\n  # @return Returns x - y.\n  # @example Subtracting two integers.\n  #   subtract(5, 1) => 4\n  dispatch :subtract_ints do\n    param 'Integer', :x\n    param 'Integer', :y\n    return_type 'Numeric'\n  end\n\n  def subtract_ints(x, y)\n    x - y\n  end\nend\n{code}", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32456", "fixedVersions": ["PDOC 1.0.0"], "id": "32456", "issueType": "Bug", "key": "PDOC-135", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-11-16T10:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings doesn't recognize `return_type` in 4.x function dispatch", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Not sure this ever happened but may be a good thing to do when we release our new run of blog posts/publicity for strings.", "created": "2018-03-05T12:19:00.000000"}], "components": [], "created": "2016-11-10T13:54:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@731aadad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtq7:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}], "description": "Should cover:\n\nDelivering Documentation to Users\nHosting documentation as github pages\nRunning the Strings web server", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32486", "fixedVersions": [], "id": "32486", "issueType": "Task", "key": "PDOC-134", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "evangelize \"how to puppet-strings\"", "timeSpent": "PT0S", "updated": "2019-05-01T15:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Edit the existing README, then determine other tickets needed. \n\nTickets I think I might need:\n* Create a strings page for the Docs site, would exist alongside existing module docs\n* Change BGTM, Style Guide, and other(?) module pages to reflect Strings existence", "created": "2016-11-07T17:03:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Created PDOC-145 to track remaining Docs work for Strings.", "created": "2016-11-28T13:21:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": ["DOCS"], "created": "2016-11-07T17:00:00.000000", "creator": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3769fa4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hza033:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_13493_*|*_3_*:*_1_*:*_187635018_*|*_5_*:*_1_*:*_429788615_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1187417958"}], "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32328", "fixedVersions": ["PDOC 1.0.0"], "id": "32328", "issueType": "Task", "key": "PDOC-133", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "resolution": "Fixed", "resolutionDate": "2016-11-23T14:58:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Edit Strings README", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "62450221ad6b7e006aa4e34c", "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "I've got a rough draft mostly fleshed out here: https://docs.google.com/a/puppet.com/document/d/14CZGJJ_lbrHTZXyTGy9VTawSC9mN_NoZ61u7FScOF5A/edit?usp=sharing", "created": "2016-11-09T16:49:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "LGTM and I made some suggestions in the doc. Also, I created https://github.com/puppetlabs/puppet-strings/pull/124 to include modern PE instructions in installation instructions.", "created": "2016-11-09T18:39:00.000000"}], "components": [], "created": "2016-11-07T15:35:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@14d90a1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9zzj:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_78721_*|*_3_*:*_1_*:*_772635753_*|*_5_*:*_1_*:*_1037272866_*|*_6_*:*_1_*:*_0"}], "description": "I think this post is sort of meant to be a demo of what strings can do for anyone who isn't familiar. I plan to basically go over how to document some of the major components of a module with examples.", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32369", "fixedVersions": [], "id": "32369", "issueType": "Task", "key": "PDOC-132", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-11-16T14:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Blog post: documenting new (or old) modules with puppet-strings", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c11ebee1b5a0070293512", "body": "And maybe there could also be some kind of way of using a template or a 'README.top' file to allow adding freeform stuff without putting it in heredocs in the code?\n\nIf there's already a way to do something similar or equivalent, let me know.", "created": "2016-10-25T00:28:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Hey [~accountid:623c11ebee1b5a0070293512]! You are correct that README generation isn't currently possible. I had been thinking along similar lines, though. It makes sense and I think we'll make it so at some point (not for the 1.0 release, probably, but hopefully soon!)", "created": "2016-10-25T10:55:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Markdown functionality has been merged to master and for the foreseeable future, this is as close as we'll come to generating a full README.", "created": "2018-02-27T17:52:00.000000"}], "components": [], "created": "2016-10-24T22:34:00.000000", "creator": "623c11ebee1b5a0070293512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@36cf5709"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9qmf:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_42409092228_*|*_6_*:*_1_*:*_0"}], "description": "Is it possible to generate a module's README itself from puppet-strings? I first thought that this was possible (and some folks on the modules team seemed to think it was feasible), but from brief testing of the examples, and looking at the help text, it seems like typically things go the other way (a README html file is generated from the README).\n\nIt would be ideal (IMHO) to be able to include descriptions for the various typical sections in heredocs within the module, and have puppet-strings generate the README, including the examples and the parameters and their descriptions.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32530", "fixedVersions": [], "id": "32530", "issueType": "New Feature", "key": "PDOC-131", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c11ebee1b5a0070293512", "resolution": "Won't Do", "resolutionDate": "2018-02-27T17:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "generate README from puppet-strings", "timeSpent": "PT0S", "updated": "2018-02-27T17:52:00.000000", "votes": "3", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c11ebee1b5a0070293512", "created": "2016-10-24T23:01:00.000000", "name": "puppet-strings1.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12379"}], "comments": [{"author": "623c11ebee1b5a0070293512", "body": "ps - Just realized if you indent, it behaves as expected. However, the unpredictable behavior when you don't indent still seems like a bug.", "created": "2016-10-24T23:01:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:623c11ebee1b5a0070293512] that's actually a YARD thing - the same goes for examples. We don't have control over that, but we can and should make note of that in the README. As for official puppet modules using strings, part of the reason we released 0.99.0 was so that our internal docs team could start using it on our modules. So, you should start to see that happening soon.", "created": "2016-10-25T10:58:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-10-24T22:27:00.000000", "creator": "623c11ebee1b5a0070293512", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3030ff23"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9qm7:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_51527718_*|*_10007_*:*_1_*:*_91124642_*|*_5_*:*_1_*:*_2851574476_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_4239354"}], "description": "Creating long descriptions doesn't seem to work optimally; typically, I'd want to wrap at 80 or 140 characters, but a newline seems to confuse puppet-strings. If this is expected behavior, the limitation should be documented better.\n\nFor example, if you try to wrap lines for a long description, e.g.,\n\n{code:ruby}\n# @param package_source [String] The source for the package. Possible values\n# are undef (default), meaning the package will be installed from the\n# vendor's packaging system using configured repos. On supported platforms,\n# this can also be set to:\n# 'nginx-stable': (current production release from official repository)\n# 'nginx-mainline': (current development release from official repository)\n# 'passenger': (Phusion Passenger repos)\n{code}\n\nand generate the pages using the example command, the parameter text is truncated, and the extra text shows up in an unexpected place (in this example, under Overview)\n!puppet-strings1.png|thumbnail!\n\nI would also love to see at least one official Puppet module documented using puppet-strings, having a concrete example would be really useful.", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32483", "fixedVersions": ["PDOC 1.0.0"], "id": "32483", "issueType": "Bug", "key": "PDOC-130", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c11ebee1b5a0070293512", "resolution": "Fixed", "resolutionDate": "2016-10-26T15:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add note to README about linebreaks and indentation for long tag docs", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-10-19T15:07:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Given the following 4.x function, both overloads in the JSON output should include a parameter and return tag:\n\n{code}\n# Subtracts two things.\nPuppet::Functions.create_function(:subtract) do\n  # @param x The first integer.\n  # @param y The second integer.\n  # @return [Integer] Returns x - y.\n  # @example Subtracting two integers.\n  #   subtract(5, 1) => 4\n  dispatch :subtract_ints do\n    param 'Integer', :x\n    param 'Integer', :y\n  end\n\n  # Here is a docstring\n  # @param x The first array.\n  # @param y The second array.\n  # @return [Array] Returns x - y.\n  # @example Subtracting two arrays.\n  #   subtract([3, 2, 1], [1]) => [3, 2]\n  dispatch :subtract_arrays do\n    param 'Array', :x\n    param 'Array', :y\n  end\n\n  def subtract_ints(x, y)\n    x - y\n  end\n\n  def subtract_arrays(x, y)\n    x - y\n  end\nend\n{code}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@73cfce48"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9omv:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2773772_*|*_1_*:*_1_*:*_1378650112_*|*_10007_*:*_1_*:*_866392108_*|*_3_*:*_1_*:*_426165_*|*_5_*:*_1_*:*_1049740348_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_158871074"}], "description": "In the following function overload, if you remove the \"Subtracts two integers\" line, strings will ignore the rest of the @param and @return tags, but *only* in the JSON output, it seems.\n\n{code}\nPuppet::Functions.create_function(:subtract) do\n  # Subtracts two integers.\n  # @param x The first integer.\n  # @param y The second integer.\n  # @return [Integer] Returns x - y.\n  # @example Subtracting two integers.\n  #   subtract(5, 1) => 4\n  dispatch :subtract_ints do\n    param 'Integer', :x\n    param 'Integer', :y\n  end\nend\n{code}\n\n... results in ...\n\n{code}\n      \"name\": \"subtract\",\n      \"file\": \"/Users/whopper/Coding/strings-demo/strings-demo/lib/puppet/functions/subtract.rb\",\n      \"line\": 2,\n      \"type\": \"ruby4x\",\n      \"docstring\": {\n        \"text\": \"Subtracts two things.\",\n        \"tags\": [\n          {\n            \"tag_name\": \"overload\",\n            \"signature\": \"subtract(Integer $x, Integer $y)\",\n            \"name\": \"subtract\"\n          },\n          {\n            \"tag_name\": \"overload\",\n            \"signature\": \"subtract(Array $x, Array $y)\",\n            \"name\": \"subtract\"\n          }\n        ]\n      },\n{code}\n\n... as opposed to the following when the doc string is added back in:\n\n{code}\n           \"tag_name\": \"overload\",\n            \"signature\": \"subtract(Array $x, Array $y)\",\n            \"docstring\": {\n              \"text\": \"Here is a docstring\",\n              \"tags\": [\n                {\n                  \"tag_name\": \"param\",\n                  \"text\": \"The first array.\",\n                  \"types\": [\n                    \"Array\"\n                  ],\n                  \"name\": \"x\"\n                },\n                {\n                  \"tag_name\": \"param\",\n                  \"text\": \"The second array.\",\n                  \"types\": [\n                    \"Array\"\n                  ],\n                  \"name\": \"y\"\n                },\n                {\n                  \"tag_name\": \"return\",\n                  \"text\": \"Returns x - y.\",\n                  \"types\": [\n                    \"Array\"\n                  ]\n                },\n                {\n                  \"tag_name\": \"example\",\n                  \"text\": \"subtract([3, 2, 1], [1]) => [3, 2]\",\n                  \"name\": \"Subtracting two arrays.\"\n                }\n              ]\n            },\n{code}", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32437", "fixedVersions": ["PDOC 1.0.0"], "id": "32437", "issueType": "Bug", "key": "PDOC-129", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-11-16T10:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "4.x function overload tags not parsed if the overload is missing a docstring", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "62450221ad6b7e006aa4e34c", "created": "2016-10-11T12:43:00.000000", "name": "Screen Shot 2016-10-11 at 11.40.03 AM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12393"}], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:623c08e1562ab90069f8aed4] Strange - the following works correctly:\n\n{code}\n# Adds two integers together.\n# @param x The first integer to add.\n# @param y The second integer to add.\n# @return [Integer] Returns the sum of x and y.\n# @example Example of adding two integers.\n#   demo::add(1, 2) => 3\nfunction demo::add(Integer $x, Integer $y) {\n  $x + $y\n}\n{code}\n\nI attached the HTML output of that, and the JSON collects:\n\n{code}\n{\n            \"tag_name\": \"example\",\n            \"text\": \"demo::add(1, 2) => 3\",\n            \"name\": \"Example of adding two integers.\"\n          }\n{code}\n\nI'll look into your example and see if this is a matter of documenting @example format or if something's wrong in strings.", "created": "2016-10-11T12:43:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Interesting. Wonder if the amount of hanging indent is significant. (There's none in the core functions.)", "created": "2016-10-11T12:44:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "It is", "created": "2016-10-11T13:40:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "With what [~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c] said above, my understanding is that there aren't any changes to make for this ticket on the strings side. Puppet core examples will need to be updated to use the proper syntax, though. \n\nIt may make sense to add a bit more to the README about how to use @examples", "created": "2016-10-12T14:43:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Yeah! An update to the README plus a PUP or DOC ticket for the needed edits sounds like a fine resolution to this. \n\nWhat I'd like to know from the README:\n\n* How much indentation should one use? I'm noticing 2 spaces above", "created": "2016-10-12T14:53:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:623c08e1562ab90069f8aed4] I opened https://github.com/puppetlabs/puppet-strings/pull/114 and filed https://puppet.atlassian.net/browse/DOC-2970.", "created": "2016-10-12T16:06:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-10-11T12:36:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@18883197"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9h7b:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_70212053_*|*_1_*:*_1_*:*_95206431_*|*_10007_*:*_1_*:*_6681767_*|*_3_*:*_1_*:*_3524131_*|*_5_*:*_1_*:*_3981492009_*|*_6_*:*_1_*:*_0"}], "description": "Several functions include {{\\@example}} tags in their comment text, but Strings isn't handling them in a useful way. Check out these instances from the assert_type function: \n\nOriginal source: \n\n{code}\n# ...\n# 1. The expected data type.\n# 2. A value to compare against the expected data type.\n#\n# @example Using `assert_type`\n#\n# ~~~ puppet\n# $raw_username = 'Amy Berry'\n#\n# # Assert that $raw_username is a non-empty string and assign it to $valid_username.\n# $valid_username = assert_type(String[1], $raw_username)\n#\n# # $valid_username contains \"Amy Berry\".\n# # If $raw_username was an empty string or a different data type, the Puppet run would\n# # fail with an \"Expected type does not match actual\" error.\n# ~~~\n#\n# You can use an optional lambda to provide enhanced feedback. The lambda takes two\n# mandatory parameters, in this order:\n#\n# 1. The expected data type as described in the function's first argument.\n# 2. The actual data type of the value.\n#\n# @example Using `assert_type` with a warning and default value\n#\n# ~~~ puppet\n# $raw_username = 'Amy Berry'\n#\n# # Assert that $raw_username is a non-empty string and assign it to $valid_username.\n# # If it isn't, output a warning describing the problem and use a default value.\n# $valid_username = assert_type(String[1], $raw_username) |$expected, $actual| {\n#   warning( \"The username should be \\'${expected}\\', not \\'${actual}\\'. Using 'anonymous'.\" )\n#   'anonymous'\n# }\n#\n# # $valid_username contains \"Amy Berry\".\n# # If $raw_username was an empty string, the Puppet run would set $valid_username to\n# # \"anonymous\" and output a warning: \"The username should be 'String[1, default]', not\n# # 'String[0, 0]'. Using 'anonymous'.\"\n# ~~~\n#\n# For more information about data types, see the\n# [documentation](https://docs.puppetlabs.com/puppet/latest/reference/lang_data.html).\n#\n# @since 4.0.0\n#\n{code}\n\nResulting JSON output:\n\n{code}\n      \"docstring\": {\n        \"text\": \"Returns the given value if it is of the given\\n[data type](https://docs.puppetlabs.com/puppet/latest/reference/lang_data.html), or\\notherwise either raises an error or executes an optional two-parameter\\n[lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html).\\n\\nThe function takes two mandatory arguments, in this order:\\n\\n1. The expected data type.\\n2. A value to compare against the expected data type.\\n\\n~~~ puppet\\n$raw_username = 'Amy Berry'\\n\\n# Assert that $raw_username is a non-empty string and assign it to $valid_username.\\n$valid_username = assert_type(String[1], $raw_username)\\n\\n# $valid_username contains \\\"Amy Berry\\\".\\n# If $raw_username was an empty string or a different data type, the Puppet run would\\n# fail with an \\\"Expected type does not match actual\\\" error.\\n~~~\\n\\nYou can use an optional lambda to provide enhanced feedback. The lambda takes two\\nmandatory parameters, in this order:\\n\\n1. The expected data type as described in the function's first argument.\\n2. The actual data type of the value.\\n\\n~~~ puppet\\n$raw_username = 'Amy Berry'\\n\\n# Assert that $raw_username is a non-empty string and assign it to $valid_username.\\n# If it isn't, output a warning describing the problem and use a default value.\\n$valid_username = assert_type(String[1], $raw_username) |$expected, $actual| {\\n  warning( \\\"The username should be \\\\'${expected}\\\\', not \\\\'${actual}\\\\'. Using 'anonymous'.\\\" )\\n  'anonymous'\\n}\\n\\n# $valid_username contains \\\"Amy Berry\\\".\\n# If $raw_username was an empty string, the Puppet run would set $valid_username to\\n# \\\"anonymous\\\" and output a warning: \\\"The username should be 'String[1, default]', not\\n# 'String[0, 0]'. Using 'anonymous'.\\\"\\n~~~\\n\\nFor more information about data types, see the\\n[documentation](https://docs.puppetlabs.com/puppet/latest/reference/lang_data.html).\",\n        \"tags\": [\n          {\n            \"tag_name\": \"example\",\n            \"text\": \"\",\n            \"name\": \"Using `assert_type`\"\n          },\n          {\n            \"tag_name\": \"example\",\n            \"text\": \"\",\n            \"name\": \"Using `assert_type` with a warning and default value\"\n          },\n          {\n            \"tag_name\": \"since\",\n            \"text\": \"4.0.0\"\n          },\n          {\n            \"tag_name\": \"overload\",\n            \"signature\": \"assert_type(Type $type, Any $value, Optional[Callable[Type, Type]] &$block)\",\n            \"name\": \"assert_type\"\n          },\n          {\n            \"tag_name\": \"overload\",\n            \"signature\": \"assert_type(String $type_string, Any $value, Optional[Callable[Type, Type]] &$block)\",\n            \"name\": \"assert_type\"\n          }\n        ]\n      },\n{code}\n\n...that might be kind of hard to read, but what's happening is that it's snipping out the line that starts with {{\\@example}} and using it to populate a \"tag_name\":\"example\" object, but it's not grabbing the code block that's supposed to be associated with the example. And now that I think about it, it's really hard to tell WHICH text is supposed to be associated in the first place! There's a short run in the middle that is not associated with either example, as I read it. \n\nI think we need to do one of these things:\n\n* Document how to explicitly associate an example tag with a multi-line block of example text. If there's not currently a way to do that, make one. \n* Document that example tags are impossible to use constructively, and remove all instances from the Puppet core codebase. ", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32368", "fixedVersions": ["PDOC 1.0.0"], "id": "32368", "issueType": "Bug", "key": "PDOC-128", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2016-10-13T13:23:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Update README to explain: What's the deal with @example tags?", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "Sounds like a {{Puppet::Util::Docs.scrub}} call is probably missing for features.", "created": "2016-10-11T13:39:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-10-11T12:27:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Given the following type, string should parse the feature :magic and strip out all whitespace and newlines from its docstring:\n\n{code}\nPuppet::Type.newtype(:database) do\n  desc 'An example database server resource type.'\n  feature :encryption, 'The provider supports encryption.', methods: [:encrypt]\n\n  feature :magic,\n    'The feature docstring should have\n    whitespace and newlines stripped out.'\nend\n{code}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6effd9f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9h6n:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This change ensures that puppet Type features have their docstrings scrubbed of extra whitespace and newlines."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_66894644_*|*_1_*:*_1_*:*_12012787_*|*_10007_*:*_1_*:*_2591484_*|*_3_*:*_1_*:*_120212_*|*_5_*:*_2_*:*_4054238266_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_21820616"}], "description": "In most text blobs, we properly strip hanging indentation. But feature descriptions \u2014\u00a0part of some resource type objects \u2014\u00a0are getting missed. \n\nFrom the 'user' type: \n{code}\n      \"features\": [\n        {\n          \"name\": \"allows_duplicates\",\n          \"description\": \"The provider supports duplicate users with the same UID.\"\n        },\n        {\n          \"name\": \"manages_homedir\",\n          \"description\": \"The provider can create and remove home directories.\"\n        },\n        {\n          \"name\": \"manages_passwords\",\n          \"description\": \"The provider can modify user passwords, by accepting a password\\n      hash.\"\n        },\n        {\n          \"name\": \"manages_password_age\",\n          \"description\": \"The provider can set age requirements and restrictions for\\n      passwords.\"\n        },\n        {\n          \"name\": \"manages_password_salt\",\n          \"description\": \"The provider can set a password salt. This is for providers that\\n       implement PBKDF2 passwords with salt properties.\"\n        },\n        {\n          \"name\": \"manages_solaris_rbac\",\n          \"description\": \"The provider can manage roles and normal users\"\n        },\n        {\n          \"name\": \"manages_expiry\",\n          \"description\": \"The provider can manage the expiry date for a user.\"\n        },\n        {\n          \"name\": \"system_users\",\n          \"description\": \"The provider allows you to create system users with lower UIDs.\"\n        },\n        {\n          \"name\": \"manages_aix_lam\",\n          \"description\": \"The provider can manage AIX Loadable Authentication Module (LAM) system.\"\n        },\n        {\n          \"name\": \"libuser\",\n          \"description\": \"Allows local users to be managed on systems that also use some other\\n       remote NSS method of managing accounts.\"\n        },\n        {\n          \"name\": \"manages_shell\",\n          \"description\": \"The provider allows for setting shell and validates if possible\"\n        },\n        {\n          \"name\": \"manages_loginclass\",\n          \"description\": \"The provider can manage the login class for a user.\"\n        }\n      ]\n{code}\n\nNote the occurrences of \"\\n\" followed by six or seven spaces. ", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32602", "fixedVersions": ["PDOC 1.0.0"], "id": "32602", "issueType": "Bug", "key": "PDOC-127", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2016-10-12T17:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Hanging indent isn't stripped for resource feature descriptions", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "Currently only string literals and heredoc expressions are supported, with the latter having known issues due to long standing \"it's not a bug!\" bug in YARD that we try to work around.\n\nI think we can attempt to fix this by simply stripping both {{%q}} and {{%Q}} from around the strings, although we should error if the latter attempts interpolation as that cannot be supported.", "created": "2016-10-11T13:37:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Is \"quoted heredoc\" supported ? it can also include interpolations. Just stripping %q %Q sounds fine to me as well as error if there is Ruby interpolation in a docstring.", "created": "2016-10-12T08:31:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "I believe it would be treated the same as a double quoted string with interpolations: namely the result should contain the interpolation expression as text.  We should test this, [~accountid:62450221ad6b7e006aa4e34c].", "created": "2016-10-12T11:10:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Here are a few test cases and what we currently get. Note that the warnings only show up when *not* using either of the {{--emit-json}} options.\n\nh4. 1: string interpolation using {{%Q}}\n{code}\ntest = \"hello world\"\n  desc %Q{This is a Q test to see what happens when\n          we use interpolation: #{test}}\n\nbundle exec puppet strings generate test_provider.rb\n[warn]: In file `test_provider.rb':1: Cannot resolve link to This from text.\n\n      \"docstring\": {\n        \"text\": \"%Q{This is a Q test to see what happens when\\nwe use interpolation: #{test}}\"\n      },\n{code}\n\nh4. regular heredoc\n\n{code}\n  test = \"hello world\"\n  desc <<-DOC\n    This is a Q test to see what happens when\n    we use interpolation: #{test}}\nDOC\n\nbundle exec puppet strings generate test_provider.rb\n[warn]: In file `test_provider.rb':2: Cannot resolve link to test from text:\n[warn]: ...{test}...\n\n      \"docstring\": {\n        \"text\": \"This is a Q test to see what happens when\\nwe use interpolation: #{test}\"\n      },\n{code}\n\nh4. quoted heredoc (I think this is what [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] meant - this should suppress interpolation):\n\n{code}\n    test = \"hello world\"\n    desc <<-'DOC'\n      This is a Q test to see what happens when\n      we use interpolation: #{test}\n  DOC\n\n[warn]: In file `test_provider.rb':2: Cannot resolve link to test from text:\n[warn]: ...{test}...\n\n      \"docstring\": {\n        \"text\": \"This is a Q test to see what happens when\\nwe use interpolation: #{test}\"\n      },\n{code}", "created": "2016-10-12T11:26:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "\ud83d\udc4d thanks for the tests, looks like the quoted heredoc is operating correctly with respect to the best puppet-strings can do, although those warnings are annoying.  I wonder if there is a way to prevent YARD from treating it as a link to something.", "created": "2016-10-12T11:30:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "So then it sounds like the plan of action for this ticket is to simply strip off {{%Q}} and {{%q}} from docstrings? And unless we can find a way to prevent those warnings, nothing else will change and it's expected that docstrings that contain interpolated text will end up having the interpolation expression?", "created": "2016-10-12T11:34:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "Yes on stripping {{%Q}} and {{%q}} (and the brackets).\n\nYes on treating interpolated expressions as simply raw docstring text", "created": "2016-10-12T11:37:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "I agree with Peter! Interpolation is not desirable here, and treating it as raw text is an excellent fallback when we encounter it.", "created": "2016-10-12T15:11:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-10-11T12:24:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Given the following provider, strings should parse the docstring as \"The database provider on Linux. Here is a test: #{test}\" rather than \"%Q{The database provider on Linux. Here is a test: #{test}}\". Note that string interpolations are not supported, so we expect to see the literal interpolation expression in the final string.\n\n{code}\nPuppet::Type.type(:database).provide :linux do\n  confine 'osfamily' => 'linux'\n  defaultfor 'osfamily' => 'linux'\n  commands :database => '/usr/bin/database'\n\n  test = \"hello world\"\n\n  desc %Q{The database provider on Linux. Here is a test: #{test}}\n\n  # ...\nend\n{code}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a4b8fd8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9h6f:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously, docstrings using the Ruby %Q or %q syntax were parsed literally, resulting in the literal \"%Q\" appearing in the final string. This change ensures that the resulting string does not include that notation."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_251737300_*|*_1_*:*_1_*:*_72433428_*|*_10007_*:*_1_*:*_156372290_*|*_3_*:*_1_*:*_9280328_*|*_5_*:*_2_*:*_2429393468_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_5484382_*|*_10005_*:*_1_*:*_1233129745"}], "description": "In Strings's JSON output, check out the 'password' parameter of the 'user' resource type. It has a leftover {{%q}} (plus curly braces) from its original ruby string quoting:\n\n{code}\n{\n          \"name\": \"password\",\n          \"description\": \"%q{The user's password, in whatever encrypted format the local system\\nrequires. Consult your operating system's documentation for acceptable password\\nencryption formats and requirements.\\n\\n* Mac OS X 10.5 and 10.6, and some older Linux distributions, use salted SHA1\\n  hashes. You can use Puppet's built-in `sha1` function to generate a salted SHA1\\n  hash from a password.\\n* Mac OS X 10.7 (Lion), and many recent Linux distributions, use salted SHA512\\n  hashes. The Puppet Labs [stdlib][] module contains a `str2saltedsha512` function\\n  which can generate password hashes for these operating systems.\\n* OS X 10.8 and higher use salted SHA512 PBKDF2 hashes. When managing passwords\\n  on these systems, the `salt` and `iterations` attributes need to be specified as\\n  well as the password.\\n* Windows passwords can only be managed in cleartext, as there is no Windows API\\n  for setting the password hash.\\n\\n[stdlib]: https://github.com/puppetlabs/puppetlabs-stdlib/\\n\\nEnclose any value that includes a dollar sign ($) in single quotes (') to avoid\\naccidental variable interpolation.}\"\n        }\n{code}\n\nEither Strings should be stripping this, or, if that's not feasible, we should specify which quoting constructs are legal to use in a resource type / provider / etc. ", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32477", "fixedVersions": ["PDOC 1.0.0"], "id": "32477", "issueType": "Bug", "key": "PDOC-126", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2016-10-31T12:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Ruby quoting constructs are incompletely stripped from some docstrings", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "My preferred interface would be a top-level {{signatures}} tag that is always an array. ", "created": "2016-10-11T11:50:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "This is funky because this is how YARD represents the data.  That is to say the intention of this schema was to enable any users familiar with YARD to consume the data for their uses and not solely as a mechanism for which Puppet's doc team can generate documentation.\n\nFunction objects only have a single signature, which is omitted when the function has overloads because the overload tags themselves store their signature representation.  Perhaps this is not the best way of representing it, but it's consistent with how YARD does it.", "created": "2016-10-11T13:29:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Sure. But given that this JSON will be used by the Forge, possibly the PE console, possibly a future CLI interface for reading bite-sized docs, etc., I think it's worth treating it like a designed interface, don't you? ", "created": "2016-10-11T16:12:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Agree with [~accountid:623c08e1562ab90069f8aed4] here. Think this format should try to be free of yard concerns. Who knows what we will be using years from now.", "created": "2016-10-12T08:19:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "I'm completely fine with having a better structure that isn't tied closely to YARD, but I'd still argue that an overload's signature belongs with the overload's data (doc text, tags, etc.) because most of the time you want this displayed as a single entity in a list of overloads.", "created": "2016-10-12T11:12:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "In the interest of getting to a decision, it sounds like we're comfortable with changing the behavior from YARD. If that's true and I understand correctly, the remaining question is where we want the signature(s) to be nested within the JSON?", "created": "2016-10-12T16:30:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "I think our options are:\n\n# As a top-level key (\"signatures\" maybe) in the function object.\n# As a key (\"signatures\") in the \"docstring\" object.\n# As an object in the \"docstring.tags\" object (\"tag_name\":\"signatures\", \"signatures\":<ARRAY OF STRINGS>, or something like that).\n# As a group of \"overload\" objects in the docstring.tags object (i.e. we just move the existing top-level \"signature\" key to an overload object). \n\nI dislike options 3 and 4, but can easily live with them if there's a good argument for going that way. I think 1 and 2 are basically equivalent. ", "created": "2016-10-12T16:56:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "I don't feel like I have a basis for making a recommendation and am willing to accept the consensus choice.", "created": "2016-10-12T22:35:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Wait, I forgot something: Parameter descriptions are attached to signatures, and each signature can also have a description as well. This isn't widely used in the current code base, but here's an example: \n\n{code}\n{\n      \"name\": \"lookup\",\n      \"file\": \"/Users/nick/RubymineProjects/puppet-docs/vendor/puppet/lib/puppet/functions/lookup.rb\",\n      \"line\": 124,\n      \"type\": \"ruby4x\",\n      \"docstring\": {\n        \"text\": \"Uses the Puppet lookup system to retrieve a value for a given key. By default,\\nthis returns the first value found (and fails compilation if no values are\\navailable), but you can configure it to merge multiple values into one, fail\\ngracefully, and more.\\n\\nWhen looking up a key, Puppet will search up to three tiers of data, in the\\nfollowing order:\\n\\n1. Hiera.\\n2. The current environment's data provider.\\n3. The indicated module's data provider, if the key is of the form\\n   `<MODULE NAME>::<SOMETHING>`.\\n\\n#### Arguments\\n\\nYou must provide the name of a key to look up, and can optionally provide other\\narguments. You can combine these arguments in the following ways:\\n\\n* `lookup( <NAME>, [<VALUE TYPE>], [<MERGE BEHAVIOR>], [<DEFAULT VALUE>] )`\\n* `lookup( [<NAME>], <OPTIONS HASH> )`\\n* `lookup( as above ) |$key| { # lambda returns a default value }`\\n\\nArguments in `[square brackets]` are optional.\\n\\nThe arguments accepted by `lookup` are as follows:\\n\\n1. `<NAME>` (string or array) --- The name of the key to look up.\\n    * This can also be an array of keys. If Puppet doesn't find anything for the\\n    first key, it will try again with the subsequent ones, only resorting to a\\n    default value if none of them succeed.\\n2. `<VALUE TYPE>` (data type) --- A\\n[data type](https://docs.puppetlabs.com/puppet/latest/reference/lang_data_type.html)\\nthat must match the retrieved value", "created": "2016-10-14T15:12:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "Okay, taking that into account, here's my full proposal:\n\n* We leave the format of the \"overload\"/signature objects mostly alone \u2014\u00a0they continue to be objects that can have their own docstring text, tags, etc.\n* However, we remove the \"tag_name\":\"overload\" part...\n* (...and possibly the \"name\" part, since it never seems to contain any new information?...)\n* ...and we move them from the docstring.tags array to a new top-level array in the function object. The key name should be either \"signatures\" (existing, well-known term of art) or \"dispatches\" (after the name of the method used to establish a signature in the Ruby 4x function API). I prefer \"signatures.\"\n* If there is only one signature for a function, we combine the signature and any \"tag_name\":\"param\" objects from the docstring.tags array to create a new signature object, which we place in the top-level \"signatures\" array. \n** This unifies the behavior of single and multiple dispatch, which was my original request for this ticket.\n* We no longer use the top-level \"signature\" (non-plural) key or free-floating \"param\" objects in the tags array. Param descriptions are always associated with a particular function dispatch. \n** Does that match what we already do to validate \\@param tags? Or am I forgetting something weird?\n\nHow does this sound? I'd also like to get input from the Forge team since I think they're the next people going to be using this... who's the right one to ask for that?", "created": "2016-10-14T15:30:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "[~accountid:557058:ad2090d1-8a61-4530-9228-7d89570c23b7] can evaluate from the Forge perspective", "created": "2016-10-14T15:35:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "That sounds reasonable to me. Having one place to look for signatures (that is always a list, even if it only has one item) sounds a lot better than a conditional.", "created": "2016-10-19T16:03:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Based on [~accountid:623c08e1562ab90069f8aed4]'s proposals, I believe the JSON of his examples will look like this (please correct me if I'm wrong):\n\nEdit: perhaps in the case of only one signature, the return tag should also be included in the top-level {{signatures}} object?\n\nh4. A function with multiple dispatches\n{code}\n{\n  \"puppet_functions\": [\n    {\n      \"name\": \"lookup\",\n      \"file\": \"/Users/whopper/Coding/puppet/lib/puppet/functions/lookup.rb\",\n      \"line\": 124,\n      \"type\": \"ruby4x\",\n      \"signatures\": [\n        {\n          \"signature\": \"lookup(NameType $name, Optional[ValueType] $value_type, Optional[MergeType] $merge)\"\n        },\n        {\n          \"signature\": \"lookup(NameType $name, Optional[ValueType] $value_type, Optional[MergeType] $merge, DefaultValueType $default_value)\"\n        },\n        {\n          \"signature\": \"lookup(NameType $name, Optional[ValueType] $value_type, Optional[MergeType] $merge, BlockType &$block)\"\n        },\n        {\n          \"signature\": \"lookup(OptionsWithName $options_hash, Optional[BlockType] &$block)\",\n          \"docstring\": {\n            \"text\": \"Lookup without name. Name then becomes a required entry in the options hash\",\n            \"tags\": [\n              {\n                \"tag_name\": \"param\",\n                \"text\": \"\",\n                \"types\": [\n                  \"OptionsWithName\"\n                ],\n                \"name\": \"options_hash\"\n              },\n              {\n                \"tag_name\": \"param\",\n                \"text\": \"\",\n                \"types\": [\n                  \"Optional[BlockType]\"\n                ],\n                \"name\": \"&block\"\n              },\n              {\n                \"tag_name\": \"return\",\n                \"text\": \"\",\n                \"types\": [\n                  \"Any\"\n                ]\n              }\n            ]\n          },\n        },\n        {\n          \"signature\": \"lookup(Variant[String,Array[String]] $name, OptionsWithoutName $options_hash, Optional[BlockType] &$block)\",\n          \"docstring\": {\n            \"text\": \"Lookup using name and options hash.\",\n            \"tags\": [\n              {\n                \"tag_name\": \"param\",\n                \"text\": \"\",\n                \"types\": [\n                  \"Variant[String,Array[String]]\"\n                ],\n                \"name\": \"name\"\n              },\n              {\n                \"tag_name\": \"param\",\n                \"text\": \"\",\n                \"types\": [\n                  \"OptionsWithoutName\"\n                ],\n                \"name\": \"options_hash\"\n              },\n              {\n                \"tag_name\": \"param\",\n                \"text\": \"\",\n                \"types\": [\n                  \"Optional[BlockType]\"\n                ],\n                \"name\": \"&block\"\n              },\n              {\n                \"tag_name\": \"return\",\n                \"text\": \"\",\n                \"types\": [\n                  \"Any\"\n                ]\n              }\n            ]\n          },\n        }\n      ]\n      \"docstring\": {\n        \"text\": \"text here\"\n        \"tags\": [\n          {\n            \"tag_name\": \"example\",\n            \"text\": \"\\nlookup('ntp::service_name')\",\n            \"name\": \"Look up a key and return the first value found\"\n          },\n          {\n            \"tag_name\": \"example\",\n            \"text\": \"\\nlookup('classes', Array[String], 'unique').include\",\n            \"name\": \"Do a unique merge lookup of class names, then add all of those classes to the catalog (like `hiera_include`)\"\n          },\n          {\n            \"tag_name\": \"example\",\n            \"text\": \"\\nlookup( { 'name'  => 'users',\\n          'merge' => {\\n            'strategy'        => 'deep',\\n            'knockout_prefix' => '--',\\n          },\\n})\",\n            \"name\": \"Do a deep hash merge lookup of user data, but let higher priority sources remove values by prefixing them with `--`\"\n          },\n          {\n            \"tag_name\": \"since\",\n            \"text\": \"4.0.0\"\n          }\n      \"source\": \"source here\"   }\n  ]\n}\n\n\n{code}\n\nh4. A function with only one signature\n{code}\n{\n  \"puppet_functions\": [\n    {\n      \"name\": \"alert\",\n      \"file\": \"/Users/whopper/Coding/puppet/lib/puppet/functions/alert.rb\",\n      \"line\": 2,\n      \"type\": \"ruby4x\",\n      \"signatures\": [\n        {\n          \"signature\": \"alert(Any *$values)\",\n          \"docstring\": {\n            \"text\": \"\",\n            \"tags\": [\n              {\n                \"tag_name\": \"param\",\n                \"text\": \"The values to log.\",\n                \"types\": [\n                  \"Any\"\n                ],\n                \"name\": \"*values\"\n              },\n            ]\n          }\n        }\n      ]\n      \"docstring\": {\n        \"text\": \"Log a message on the server at level alert.\",\n        \"tags\": [\n          {\n            \"tag_name\": \"return\",\n            \"text\": \"\",\n            \"types\": [\n              \"Undef\"\n            ]\n          }\n        ]\n      },\n      \"source\": \"Puppet::Functions.create_function(:alert, Puppet::Functions::InternalFunction) do\\n  # @param values The values to log.\\n  # @return [Undef]\\n  dispatch :alert do\\n    scope_param\\n    repeated_param 'Any', :values\\n    return_type 'Undef'\\n  end\\n\\n  def alert(scope, *values)\\n    Puppet::Util::Log.log_func(scope, :alert, values)\\n  end\\nend\"\n    }\n  ]\n}\n{code}", "created": "2016-10-31T14:40:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:62450221ad6b7e006aa4e34c] Yeah, this is pretty much exactly what I was hoping for! ", "created": "2016-10-31T17:17:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-10-11T11:49:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3eb809c0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymlnr:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "This commit adds a new top-level key to the JSON schema for functions: signatures. This key holds all function signature data, and in the case of 4.x functions with multiple dispatches, each overload is present along with each of their parameters and other tags."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_74736665_*|*_1_*:*_1_*:*_1727166098_*|*_10007_*:*_2_*:*_1138472108_*|*_3_*:*_1_*:*_86876647_*|*_5_*:*_1_*:*_1049880006_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_62670263_*|*_10005_*:*_1_*:*_20134956"}], "description": "If a function has only one possible signature, it goes in the top-level {{signature}} key. But if there are multiple signatures, {{signature}} is absent, and the signatures go in {{docstring.tags.<index of an \"overload\" tag>.signature}}. (That is, a key in any number of overload tags, which are located beside any other tags.)\n\nThis isn't difficult to work around, but it's poor design. Conceptually, every function has a list of signatures, and that list frequently has just one item; it's weird that it moves to a completely different place if you add one more signature. \n\nExample of single signature: \n\n{code}\n{\n      \"name\": \"alert\",\n      \"file\": \"/Users/nick/RubymineProjects/puppet-docs/vendor/puppet/lib/puppet/functions/alert.rb\",\n      \"line\": 2,\n      \"type\": \"ruby4x\",\n      \"signature\": \"alert(Any *$values)\",\n      \"docstring\": {\n        \"text\": \"Log a message on the server at level alert.\",\n        \"tags\": [\n          {\n            \"tag_name\": \"param\",\n            \"text\": \"The values to log.\",\n            \"types\": [\n              \"Any\"\n            ],\n            \"name\": \"*values\"\n          },\n          {\n            \"tag_name\": \"return\",\n            \"text\": \"\",\n            \"types\": [\n              \"Undef\"\n            ]\n          }\n        ]\n      },\n      \"source\": \"Puppet::Functions.create_function(:alert, Puppet::Functions::InternalFunction) do\\n  # @param values The values to log.\\n  # @return [Undef]\\n  dispatch :alert do\\n    scope_param\\n    repeated_param 'Any', :values\\n    return_type 'Undef'\\n  end\\n\\n  def alert(scope, *values)\\n    Puppet::Util::Log.log_func(scope, :alert, values)\\n  end\\nend\"\n    }\n{code}\n\nExample of multiple signatures: \n\n{code}\n{\n      \"name\": \"assert_type\",\n      \"file\": \"/Users/nick/RubymineProjects/puppet-docs/vendor/puppet/lib/puppet/functions/assert_type.rb\",\n      \"line\": 53,\n      \"type\": \"ruby4x\",\n      \"docstring\": {\n        \"text\": \"Returns the given value if it is of the given\\n[data type](https://docs.puppetlabs.com/puppet/latest/reference/lang_data.html), or\\notherwise either raises an error or executes an optional two-parameter\\n[lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html).\\n\\nThe function takes two mandatory arguments, in this order:\\n\\n1. The expected data type.\\n2. A value to compare against the expected data type.\\n\\n~~~ puppet\\n$raw_username = 'Amy Berry'\\n\\n# Assert that $raw_username is a non-empty string and assign it to $valid_username.\\n$valid_username = assert_type(String[1], $raw_username)\\n\\n# $valid_username contains \\\"Amy Berry\\\".\\n# If $raw_username was an empty string or a different data type, the Puppet run would\\n# fail with an \\\"Expected type does not match actual\\\" error.\\n~~~\\n\\nYou can use an optional lambda to provide enhanced feedback. The lambda takes two\\nmandatory parameters, in this order:\\n\\n1. The expected data type as described in the function's first argument.\\n2. The actual data type of the value.\\n\\n~~~ puppet\\n$raw_username = 'Amy Berry'\\n\\n# Assert that $raw_username is a non-empty string and assign it to $valid_username.\\n# If it isn't, output a warning describing the problem and use a default value.\\n$valid_username = assert_type(String[1], $raw_username) |$expected, $actual| {\\n  warning( \\\"The username should be \\\\'${expected}\\\\', not \\\\'${actual}\\\\'. Using 'anonymous'.\\\" )\\n  'anonymous'\\n}\\n\\n# $valid_username contains \\\"Amy Berry\\\".\\n# If $raw_username was an empty string, the Puppet run would set $valid_username to\\n# \\\"anonymous\\\" and output a warning: \\\"The username should be 'String[1, default]', not\\n# 'String[0, 0]'. Using 'anonymous'.\\\"\\n~~~\\n\\nFor more information about data types, see the\\n[documentation](https://docs.puppetlabs.com/puppet/latest/reference/lang_data.html).\",\n        \"tags\": [\n          {\n            \"tag_name\": \"example\",\n            \"text\": \"\",\n            \"name\": \"Using `assert_type`\"\n          },\n          {\n            \"tag_name\": \"example\",\n            \"text\": \"\",\n            \"name\": \"Using `assert_type` with a warning and default value\"\n          },\n          {\n            \"tag_name\": \"since\",\n            \"text\": \"4.0.0\"\n          },\n          {\n            \"tag_name\": \"overload\",\n            \"signature\": \"assert_type(Type $type, Any $value, Optional[Callable[Type, Type]] &$block)\",\n            \"name\": \"assert_type\"\n          },\n          {\n            \"tag_name\": \"overload\",\n            \"signature\": \"assert_type(String $type_string, Any $value, Optional[Callable[Type, Type]] &$block)\",\n            \"name\": \"assert_type\"\n          }\n        ]\n      },\n      \"source\": \"Puppet::Functions.create_function(:assert_type, Puppet::Functions::InternalFunction) do\\n  dispatch :assert_type do\\n    param 'Type', :type\\n    param 'Any', :value\\n    optional_block_param 'Callable[Type, Type]', :block\\n  end\\n\\n  dispatch :assert_type_s do\\n    scope_param\\n    param 'String', :type_string\\n    param 'Any', :value\\n    optional_block_param 'Callable[Type, Type]', :block\\n  end\\n\\n  # @param type [Type] the type the value must be an instance of\\n  # @param value [Object] the value to assert\\n  #\\n  def assert_type(type, value)\\n    unless Puppet::Pops::Types::TypeCalculator.instance?(type,value)\\n      inferred_type = Puppet::Pops::Types::TypeCalculator.infer_set(value)\\n      if block_given?\\n        # Give the inferred type to allow richer comparison in the given block (if generalized\\n        # information is lost).\\n        #\\n        value = yield(type, inferred_type)\\n      else\\n        raise Puppet::Pops::Types::TypeAssertionError.new(\\n          Puppet::Pops::Types::TypeMismatchDescriber.singleton.describe_mismatch('assert_type():', type, inferred_type),\\n          type, inferred_type)\\n      end\\n    end\\n    value\\n  end\\n\\n  # @param scope [Puppet::Parser::Scope] scope used when obtaining loader for defined types\\n  # @param type_string [String] the type the value must be an instance of given in String form\\n  # @param value [Object] the value to assert\\n  #\\n  def assert_type_s(scope, type_string, value, &proc)\\n    t = Puppet::Pops::Types::TypeParser.singleton.parse(type_string, scope)\\n    block_given? ? assert_type(t, value, &proc) : assert_type(t, value)\\n  end\\nend\"\n    }\n{code}", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32327", "fixedVersions": ["PDOC 1.0.0"], "id": "32327", "issueType": "Bug", "key": "PDOC-125", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2016-11-16T10:43:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "JSON: Splitting function signatures into two places is awkward", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "The name of the parameter includes the leading {{*}} to indicate it is vararg, which is not something that YARD represents outside of the parameter name (i.e. there's no \"is parameter vararg\" attribute on a {{param}} tag).  However, the {{param}} tag's name attribute should not include a leading {{$}}.\n\nNote that the JSON schema was not designed solely for our internal docs team's use", "created": "2016-10-11T13:26:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "Taking PDOC-125 into account (i.e. the decision to not tie so closely to YARD with this format), I think we could do better here by having puppet-strings remove the {{*}} and set a \"is_vararg\" to true, or some such.\n\nI believe block parameters might also have {{&}} prefix.", "created": "2016-10-12T11:14:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c] If I understand correctly, that solution would result in no change to the function signature, but a removal of the {{*}} in tags.name:\n\n{code}\n \"signature\": \"alert(Any *$values)\",\n...\n\"tags\": [\n  {\n    ...\n    \"name\": \"values\"\n    \"is_vararg\" : true\n  }\n]\n{code}\n\n(Or did you mean that we should also remove the {{*}} in the signature?)\n\n[~accountid:623c08e1562ab90069f8aed4] does this actually address the problem? It sounds like you just wanted the signature to match the tag name with regards to the {{$}}.", "created": "2016-10-31T11:46:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "I think it belongs in the signature as that's just something that should be displayed without processing to the user, already in the Puppet language (with a special non-Puppet syntax for showing the block parameter since we don't support that in function declarations in the language currently).\n\nIf we strip the special characters from the name in the tag, then we should have a \"is_block\" and \"is_vararg\" attribute to convey that information instead.", "created": "2016-10-31T11:57:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Ah, reading this again I realized that we're talking about two separate things. Nick originally just meant that any param, regardless of whether it's a vararg or not, has a {{$}} in the signature but not in the param tag name:\n\n{code}\n \"puppet_functions\": [\n    {\n      \"name\": \"versioncmp\",\n      ...\n      \"signature\": \"versioncmp(String $a, String $b)\",\n      ...\n      \"tags\" : [\n            \"tag_name\": \"param\",\n            \"text\": \"\",\n            \"types\": [\n              \"String\"\n            ],\n            \"name\": \"a\"   # Note this is \"a\", not \"$a\"\n          },\n        ...\n      ] \n{code}\n\nPeter is talking about varargs, which include the {{*}} in both the signature and the tag name, but still exhibit Nick's complaint about the {{$}} only being present in the signature:\n\n{code}\n  \"puppet_functions\": [\n    {\n      \"name\": \"alert\",\n      ...\n      \"signature\": \"alert(Any *$values)\",\n      ...\n        \"tags\": [\n          {\n            \"tag_name\": \"param\",\n            \"text\": \"The values to log.\",\n            \"types\": [\n              \"Any\"\n            ],\n            \"name\": \"*values\"\n          },\n{code}\n\nSince Nick wasn't complaining about the {{*}} for varargs, I think we can leave that alone and preserve YARD's format there. We really just need to figure out what to do about the {{$}} in the signature. Would it make any sense to remove it from the function signature so it matches the tag name? In my novice eyes, that would actually be somewhat confusing when looking at the signature, but if you all think it works I'm happy to work it out.", "created": "2016-10-31T12:04:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "The intention of the signature is to appear as if the user made a declaration in the Puppet language for the function", "created": "2016-10-31T12:11:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Ah, makes sense. Then, I think the solutions here are to either add the {{$}} to the tag name or do nothing at all.\n\nThe latter option you mentioned makes a lot of sense to me, where it's just assumed that {{$}} is a way for the language to denote a variable in the signature, but the parameter name is not a variable itself. [~accountid:623c08e1562ab90069f8aed4] given all of this, do you still think the param tag name should include a {{$}}?", "created": "2016-10-31T12:17:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "After discussing with Nick, we decided that this is acceptable behavior. We'll just document that this is the way the signature and param name references work.", "created": "2016-11-01T16:09:00.000000"}], "components": [], "created": "2016-10-11T11:41:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@139281c7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9h1r:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_97360261_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_99206592_*|*_10005_*:*_1_*:*_1633886455"}], "description": "In function signatures, argument names are represented with a leading dollar sign: {{\\*$values}}, e.g. But in {{param}} tags, they don't have a $: {{\\*values}}. \n\nExample: \n\n{code}\n    {\n      \"name\": \"alert\",\n      \"file\": \"/Users/nick/RubymineProjects/puppet-docs/vendor/puppet/lib/puppet/functions/alert.rb\",\n      \"line\": 2,\n      \"type\": \"ruby4x\",\n      \"signature\": \"alert(Any *$values)\",\n      \"docstring\": {\n        \"text\": \"Log a message on the server at level alert.\",\n        \"tags\": [\n          {\n            \"tag_name\": \"param\",\n            \"text\": \"The values to log.\",\n            \"types\": [\n              \"Any\"\n            ],\n            \"name\": \"*values\"\n          },\n          {\n            \"tag_name\": \"return\",\n            \"text\": \"\",\n            \"types\": [\n              \"Undef\"\n            ]\n          }\n        ]\n      },\n      \"source\": \"Puppet::Functions.create_function(:alert, Puppet::Functions::InternalFunction) do\\n  # @param values The values to log.\\n  # @return [Undef]\\n  dispatch :alert do\\n    scope_param\\n    repeated_param 'Any', :values\\n    return_type 'Undef'\\n  end\\n\\n  def alert(scope, *values)\\n    Puppet::Util::Log.log_func(scope, :alert, values)\\n  end\\nend\"\n    }\n{code}\n\nSeems like they should be consistent in both areas, unless there's a good argument for not.", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32453", "fixedVersions": ["PDOC 1.0.0"], "id": "32453", "issueType": "Bug", "key": "PDOC-124", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Won't Fix", "resolutionDate": "2016-11-01T16:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "JSON: Inconsistent naming of function parameters", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "It makes sense in Json, it is just extra data - for HTML what is the recommended style of presentation - separate section with groups of parameters and a main alphabetical list, or something else?\nStill, this would break the JSON API I think (since \"group\" would be a new concept). Adding group to \"param\" tag would be backwards compatible I think.", "created": "2016-10-11T04:54:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "{quote}for HTML what is the recommended style of presentation - separate section with groups of parameters and a main alphabetical list, or something else?{quote}\n\nI'd suggest multiple lists - the existing \"Parameters\" list for ungrouped parameters, and an additional heading per group with the group name and bullet point list of parameters.\n\n{quote}Still, this would break the JSON API I think (since \"group\" would be a new concept). Adding group to \"param\" tag would be backwards compatible I think.{quote}\n\nPerhaps, but the schema doesn't list known tag_name types (https://github.com/puppetlabs/puppet-strings/blob/master/JSON.md#docstring-objects) so I think the anybody reading the JSON data has to be reasonably careful to search for tag_name types that they understand (certainly, that's what I've been doing.) Adding new ones ought to be straight forward, at least in a minor release rather than major.", "created": "2016-10-11T05:04:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Yes, but nesting \"param\" under \"group\" would be a breaking change. Adding a list of groups with each param listed by name would not break API, nor would adding \"group\" to the param itself.", "created": "2016-10-11T05:50:00.000000"}, {"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "The syntax I suggested here isn't correct:\n\n{code}\n@!group Database connection\n@param db_adapter Database adapter name\n@param db_host Database server hostname\n@param db_username Username to authenticate with\n@!endgroup\n{code}\n\nThe directive will group classes, defines and other handled objects, but not group tags such as {{@param}} on a single object - at least, not with the group directive supplied by YARD as far as I can tell.", "created": "2016-10-25T08:53:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This has been requested by other community members as well. Something to keep in mind.", "created": "2018-03-05T12:18:00.000000"}], "components": [], "created": "2016-10-11T03:49:00.000000", "creator": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1d67d68c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9dvj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Oct/16"}], "description": "Support for grouping of parameters with a group name would be useful when documenting classes with tens of parameters, e.g. for \"advanced parameters\", \"database connection parameters\".\n\nIt appears that YARD has {{@!group}} and {{@!endgroup}} directives already, so a doc format such as this might work:\n\n{code}\n@!group Database connection\n@param db_adapter Database adapter name\n@param db_host Database server hostname\n@param db_username Username to authenticate with\n@!endgroup\n{code}\n\nand I'd expect group within the tags in the JSON output, with parameters nested below:\n\n{code}\n\"docstring\": {\n  \"tags\": [\n    {\n      \"tag_name\": \"group\",\n      \"docstring\": {\n        \"text\": \"Database connection\",\n        \"tags\": [\n          {\n            \"tag_name\": \"param\",\n            \"text\": \"Database adapter name\",\n            \"types\": [\n              \"String\"\n            ],\n            \"name\": \"db_adapter\"\n          },\n          ....\n        ]\n      }\n    }\n  ]\n}\n{code}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32601", "fixedVersions": [], "id": "32601", "issueType": "Improvement", "key": "PDOC-123", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Support groups of parameters", "timeSpent": "PT0S", "updated": "2019-05-01T15:16:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Thanks for the report, [~accountid:557058:371cce5a-def8-43ef-91e9-d177c322c20b]. I was able to reproduce this and figure out what's going on.\n\nIn all of our tests, we create 3.x functions like yours in the following way:\n\n{code}\nPuppet::Parser::Functions::newfunction(:testfunc, doc: <<-DOC\nthis function prints all the arguments it gets\n@param [Array] some args separated by spaces\n@return [undef] won't return anything\nDOC\n) do |args|\n    args.each do |arg|\n      puts arg\n    end\n  end\n{code}\n\n... rather than:\n\n{code}\nmodule Puppet::Parser::Functions\n  newfunction(:testfunc, doc: <<-DOC\n{code}\n\n{{newfunction}} being separated from the {{Puppet::Parser::Functions}} namespace now confuses strings, while this used to work. This is indeed a regression. Note that if the function is created like in the first example above, strings will work correctly.", "created": "2016-10-10T15:23:00.000000"}, {"author": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "body": "Awesome, thanks for looking into this. For reference, the module I noticed this behavior on was [simp/simplib|https://forge.puppet.com/simp/simplib].", "created": "2016-10-11T08:13:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-10-10T14:58:00.000000", "creator": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The following function should be documented correctly by strings:\n\n{code}\nmodule Puppet::Parser::Functions\n  newfunction(:testfunc, doc: <<-DOC\nthis function prints all the arguments it gets\n@param [Array] arg_list Some args separated by spaces\n@return [undef] won't return anything\nDOC\n) do |args|\n    args.each do |arg|\n      puts arg\n    end\n  end\nend\n{code}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@54bb5dfe"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9dif:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "recent releases included a regression where documenting puppet 3.x functions where {{newfunction}} was separated from the {{Puppet::Parser::Functions}} namespace would not produce proper yard documentation. This has been fixed."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_64143512_*|*_1_*:*_1_*:*_5494175_*|*_10007_*:*_1_*:*_3750963_*|*_5_*:*_1_*:*_4139774733_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_21835827"}], "description": "When the input to strings has more than one function in {{lib/puppet/parser/functions/*}}, the generated yard documentation only includes content from the first function it finds, alphabetically. It is also not possible to find the function documentation without going opening the file manually.\n\nSteps to reproduce:\n# Clone my [test repo|https://github.com/jeefberkey/functest], which was generated with `puppet module generate` and using Puppet 3.8.7\n# {{bundle install}}\n# {{puppet strings generate}}\n# Open {{docs/index.html}} in a browser and look for the function documentation", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32427", "fixedVersions": ["PDOC 1.0.0"], "id": "32427", "issueType": "Bug", "key": "PDOC-122", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:371cce5a-def8-43ef-91e9-d177c322c20b", "resolution": "Fixed", "resolutionDate": "2016-10-11T17:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings doesn't handle puppet 3.x API syntax when newfunction is on a newline", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-10-09T14:29:00.000000", "creator": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c660141"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9cwn:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "28/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_76065256_*|*_1_*:*_1_*:*_2071320198_*|*_10007_*:*_1_*:*_78564881_*|*_3_*:*_1_*:*_4446368_*|*_5_*:*_1_*:*_2085660757_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_7091240"}], "description": "When creating the gh-pages commit it would be great to note the source tree's state (e.g. git describe --long) in the commit message(and probably the generated HTML) so that users have a chance of understanding where the documentation came from.", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32527", "fixedVersions": ["PDOC 1.0.0"], "id": "32527", "issueType": "Improvement", "key": "PDOC-121", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "resolution": "Fixed", "resolutionDate": "2016-11-04T12:00:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "gh-pages commit should reference the source", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "created": "2016-10-09T14:25:00.000000", "name": "2016-10-09_21MS+0100_709x391.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12371"}, {"attacher": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "created": "2016-10-09T14:25:00.000000", "name": "2016-10-09_21MS+0100_820x381.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12375"}], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "David - this has to do with the use of Jekyll on github io.\nhttps://help.github.com/articles/files-that-start-with-an-underscore-are-missing/\n\nit can be turned off by adding a {{.nojekyll}} file to the root. (There are other options - see the link).\n\nIf you also want Jekyll processing to be available for some files, the file may not start with one of the special Jekyll characters (see the link, there are several ways to do that).\n", "created": "2016-10-10T08:21:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Question is if we should automatically add {{.nojekyll}} or simply pick another name for the {{_index.html}} file that does not interfere with use of Jekyll.", "created": "2016-10-10T08:22:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "{{_index.html}} is not a very descriptive name. Fixing the jekyll issue as a sideeffect of improving the name doesn't sound wrong. ", "created": "2016-10-10T08:26:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I think it is better to use a different and more descriptive name than {{_index.html}} and leave Jekyll turned on since users may want to use it for other contents.", "created": "2016-10-10T08:51:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "+1.", "created": "2016-10-10T08:55:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Sadly, the usage of {{_index.html}} is thoroughly baked into YARD itself, and as far as I can tell is not configurable. I'm considering filing a request with them to make that configurable, and short term adding an exception to our own {{_config.yml}} to publish the file without turning off jekyll. Thoughts?", "created": "2016-10-12T16:33:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "{{_index.html}} comes essentially hardcoded into a base YARD template", "created": "2016-10-12T16:34:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "ok - the use of jekyll in combination with strings output is not really needed. ", "created": "2016-10-12T17:10:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "PR is up at https://github.com/puppetlabs/puppet-strings/pull/115\n\nWe don't even actually have to turn Jekyll off. I just added a bit to the rake task to add a Jekyll {{_config.yml}} file with {{include: _index.html}}, which just allows the file to be published. That config only ends up in the doc directory of the gh_pages branch.", "created": "2016-10-13T13:20:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "merged to master at: bda361a", "created": "2016-10-13T13:21:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-10-09T14:25:00.000000", "creator": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "After using the GH pages rake task as instructed by the README, the _index.html file should be accessible on the published GH site."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1104fca5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9cwf:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Previously when using the strings:gh_pages:update rake task, the generated _index.html file was not accessible in the published documentation. This change adds a configuration option to the project to allow the file to be published."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_984310_*|*_1_*:*_1_*:*_64626865_*|*_10007_*:*_1_*:*_158961_*|*_3_*:*_1_*:*_4660834_*|*_5_*:*_2_*:*_3555889729_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_424767585_*|*_10004_*:*_1_*:*_272300296"}], "description": "Experimenting with the awsome puppet-string rake tasks, I published to https://davids.github.io/puppetlabs-ntp , but it turns out that some pages are not accessible there. Specifically https://davids.github.io/puppetlabs-ntp/_index.html leads to a 404, although the file is in the commit (https://github.com/DavidS/puppetlabs-ntp/tree/gh-pages).\n\nSee attached screenshots for details.\n\n{code}\ndavid@zion:~/git/puppetlabs-ntp$ bundle exec rake strings:gh_pages:update\nM\tPuppet/Parser/Functions.html\nM\t_index.html\nM\tfile.README.html\nM\tindex.html\nM\tpuppet_classes/ntp.html\nM\tpuppet_classes/ntp_3A_3Aconfig.html\nM\tpuppet_classes/ntp_3A_3Ainstall.html\nM\tpuppet_classes/ntp_3A_3Aservice.html\nM\ttop-level-namespace.html\nAlready on 'gh-pages'\nerror: Cannot pull with rebase: You have unstaged changes.\n[warn]: Missing @param tag for parameter 'config' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'config_dir' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'config_file_mode' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'config_epp' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'config_template' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'disable_auth' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'disable_dhclient' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'disable_kernel' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'disable_monitor' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'fudge' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'driftfile' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'leapfile' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'logfile' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'iburst_enable' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'keys' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'keys_enable' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'keys_file' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'keys_controlkey' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'keys_requestkey' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'keys_trusted' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'minpoll' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'maxpoll' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'package_ensure' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'package_manage' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'package_name' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'panic' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'peers' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'preferred_servers' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'restrict' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'interfaces' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'interfaces_ignore' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'servers' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'service_enable' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'service_ensure' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'service_manage' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'service_name' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'service_provider' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'stepout' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'step_tickers_file' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'step_tickers_epp' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'step_tickers_template' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'tinker' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'tos' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'tos_minclock' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'tos_minsane' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'tos_floor' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'tos_ceiling' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'tos_cohort' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'udlc' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'udlc_stratum' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'ntpsigndsocket' near manifests/init.pp:4.\n[warn]: Missing @param tag for parameter 'authprov' near manifests/init.pp:4.\n[warn]: Missing documentation for Puppet class 'ntp::install' at manifests/install.pp:2.\n[warn]: Missing documentation for Puppet class 'ntp::service' at manifests/service.pp:2.\nFiles:                    5\nModules:                  1 (    1 undocumented)\nClasses:                  0 (    0 undocumented)\nConstants:                0 (    0 undocumented)\nAttributes:               0 (    0 undocumented)\nMethods:                  0 (    0 undocumented)\nPuppet Classes:           4 (    2 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:             0 (    0 undocumented)\nPuppet Providers:         0 (    0 undocumented)\nPuppet Functions:         0 (    0 undocumented)\n 40.00% documented\n[gh-pages 5e1e378] [strings] Generated Documentation Update\n 9 files changed, 21 insertions(+), 14 deletions(-)\nCounting objects: 14, done.\nDelta compression using up to 8 threads.\nCompressing objects: 100% (12/12), done.\nWriting objects: 100% (14/14), 1.27 KiB | 0 bytes/s, done.\nTotal 14 (delta 10), reused 0 (delta 0)\nremote: Resolving deltas: 100% (10/10), completed with 10 local objects.\nTo github.com:DavidS/puppetlabs-ntp.git\n   7f46ce5..5e1e378  gh-pages -> gh-pages\ndavid@zion:~/git/puppetlabs-ntp$ \n{code}\n\n", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32479", "fixedVersions": ["PDOC 1.0.0"], "id": "32479", "issueType": "Bug", "key": "PDOC-120", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "resolution": "Fixed", "resolutionDate": "2016-10-18T11:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Generated _index.html page is not accessible on github.io", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-10-07T15:02:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@771c1bf0"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9cnb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_964967_*|*_1_*:*_1_*:*_40607_*|*_5_*:*_1_*:*_0"}], "description": "See PDOC-118, which I accidentally referenced in the commit :). Opening this to match the commit message, instead of force pushing master.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32525", "fixedVersions": [], "id": "32525", "issueType": "Task", "key": "PDOC-119", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-07T15:19:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add required ruby version to gemspec", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Oops, PDOC-119 tracks the actual git commit for this", "created": "2016-10-07T15:04:00.000000"}], "components": [], "created": "2016-10-06T17:23:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7bc497a4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9c5r:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_295040_*|*_1_*:*_1_*:*_17990_*|*_10007_*:*_1_*:*_6026693_*|*_3_*:*_1_*:*_71714976_*|*_6_*:*_1_*:*_0"}], "description": "The strings gemspec doesn't currently have a required_ruby_version field. This makes the required version show up as '> 0' on rubygems.org, but we really only test and support ruby >= 1.9.3.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32426", "fixedVersions": ["PDOC 0.99.0"], "id": "32426", "issueType": "Task", "key": "PDOC-118", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Duplicate", "resolutionDate": "2016-10-07T15:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add ruby version requirement in puppet-strings.gemspec", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-10-06T17:06:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7109352"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9c4v:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_331817648_*|*_6_*:*_1_*:*_0"}], "description": "Close any tickets which have been resolved for the release.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32451", "fixedVersions": [], "id": "32451", "issueType": "Sub-task", "key": "PDOC-117", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-10T13:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Close all resolved tickets in Jira (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2016-10-10T13:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Announcements sent to announce, dev and users mailing lists.", "created": "2016-10-10T13:08:00.000000"}], "components": [], "created": "2016-10-06T17:06:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@32d90a5a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9c4n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_331312754_*|*_5_*:*_1_*:*_533317_*|*_6_*:*_1_*:*_0"}], "description": "Send out the release notes to puppet-dev, puppet-users and puppet-announce google groups, as well as internally at dev-team@puppetlabs.com. Also ping in IRC and Slack.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32436", "fixedVersions": [], "id": "32436", "issueType": "Sub-task", "key": "PDOC-116", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-10T13:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Send out announcements (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2016-10-10T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-10-06T17:04:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@590123f7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9c4f:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_330754336_*|*_5_*:*_1_*:*_1199495_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32425", "fixedVersions": [], "id": "32425", "issueType": "Sub-task", "key": "PDOC-115", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-10T12:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Push tag to GitHub (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2016-10-10T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Lindsey Smith\u00b711:43 AM: Gooooooooooo", "created": "2016-10-10T12:44:00.000000"}], "components": [], "created": "2016-10-06T17:03:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@404e6a39"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9c47:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_330053924_*|*_5_*:*_1_*:*_1941301_*|*_6_*:*_1_*:*_0"}], "description": "Verify the release with necessary strings stakeholders.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32402", "fixedVersions": [], "id": "32402", "issueType": "Sub-task", "key": "PDOC-114", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-10T12:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Go/no-go meeting (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2016-10-10T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "62450221ad6b7e006aa4e34c", "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "FOSS puppet-agent latest:\n\nVerified on Centos 7 by running {{strings generate}} on the apache, concat and stdlib modules. Documentation was generated as expected in both HTML and JSON.\n\nPE 3.8:\n\nVerified on Centos 7 in the same way.", "created": "2016-10-10T12:41:00.000000"}], "components": [], "created": "2016-10-06T17:02:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@214ccd0a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9c3z:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_329946955_*|*_5_*:*_1_*:*_2119916_*|*_6_*:*_1_*:*_0"}], "description": "Verify the gem works on a few platforms. Check that the major features of this release are all functional.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32326", "fixedVersions": [], "id": "32326", "issueType": "Sub-task", "key": "PDOC-113", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-10T12:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Build and smoke test gem (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2016-10-10T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Tagged 0.99.0 at 7df4f9e87c91c5eb2711496eb6ae4eb2eb95e02e", "created": "2016-10-10T12:15:00.000000"}], "components": [], "created": "2016-10-06T16:59:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a1d8094"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9c3r:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_328524414_*|*_5_*:*_1_*:*_3683365_*|*_6_*:*_1_*:*_0"}], "description": "Tag the release locally, but don't push it to GitHub yet.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32475", "fixedVersions": [], "id": "32475", "issueType": "Sub-task", "key": "PDOC-112", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-10T12:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Tag the release (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2016-10-10T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Subject:\n\nAnnounce: Strings 0.99.0 Released!\n\nBody:\n\nHello, all! Today, we're pleased to announce the release of puppet-strings 0.99.0! Strings is a YARD-based documentation tool for Puppet extensions written in Puppet and Ruby. Given some simple in-code comments containing YARD tags, it will generate consistent HTML or JSON documentation for all of your Puppet 3x/4x API functions, Puppet language functions, Ruby classes, Ruby methods, types, and providers.\n\nThis release includes a near-complete rewrite of the project, fixing many bugs from previous versions and generally improving the user experience. Note that this release is intended to be the last stop before the strings major version 1.0.0 is released, and nearly all of the functionality of the major release is included.\n\nNote also: backwards-incompatible changes have been made to the original JSON schema.\n\n*Highlights*:\n  - Both HTML and JSON documentation has been split into sections based on type: Puppet 3x API functions, Puppet 4x API functions, Ruby classes/methods, Puppet language functions, types, and providers.\n  - New --emit-json and --emit-json-stdout commandline options for generating JSON documentation.\n  - A brand new JSON schema organized around the new separation of types.\n  - Support for custom functions written in the puppet language.\n  - Support for function overloads via the create_function 4x API.\n  - YARD has been bumped to the latest version, greatly enhancing the look and usability of the HTML output.\n\n*Other important notes*:\n  - Markdown is now the default format for parsing in-code docstrings.\n  - The runtime dependency of puppet has been removed in favor of a gem 'requirement' which appears on rubygems.org. This prevents conflicts when installing strings in older versions of Puppet Enterprise. We recommend you install the puppet-strings gem using puppet, as suggested in the README.\n\nNever used Strings? Check out the README linked below and give it a try!\n\n\nThe CHANGELOG can be found here: https://github.com/puppetlabs/puppet-strings/blob/master/CHANGELOG.md\n\nThe ruby gem can be found here: https://rubygems.org/gems/puppet-strings\n\nInstallation and usage instructions can be found here: https://github.com/puppetlabs/puppet-strings/blob/master/README.md\n\n\nTo track issues related to this release or report issues, see out the PDOC JIRA project:\n\n* JIRA Project: https://puppet.atlassian.net/browse/PDOC\n\n* Fixes for 0.99.0: https://puppet.atlassian.net/issues/?filter=22705\n* Introduced in 0.99.0: https://puppet.atlassian.net/issues/?filter=22706", "created": "2016-10-07T15:56:00.000000"}], "components": [], "created": "2016-10-06T16:40:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@754111de"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9c2v:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_85346026_*|*_3_*:*_1_*:*_2610_*|*_10009_*:*_1_*:*_243193302_*|*_5_*:*_1_*:*_4793721_*|*_6_*:*_1_*:*_0"}], "description": "These will go out to puppet-dev and puppet-users. Will collaborate with [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79].", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32389", "fixedVersions": [], "id": "32389", "issueType": "Sub-task", "key": "PDOC-111", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-10T11:56:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Prepare long form release notes (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2016-10-10T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "We now have PDOC versions for both 0.99.1 and 1.0.0.\n\nFilters:\nFixed in 0.99.0: https://puppet.atlassian.net/issues/?filter=22705\nIntroduced in 0.99.0: https://puppet.atlassian.net/issues/?filter=22706", "created": "2016-10-07T15:20:00.000000"}], "components": [], "created": "2016-10-06T16:39:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50031972"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9c2n:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_81753807_*|*_5_*:*_1_*:*_251663526_*|*_6_*:*_1_*:*_0"}], "description": "(Initial planned release date: 2016-10-10)\n\nThis happens on Jira - we need to clean up the current release and prepare for the next release.\n\nCreate a version we can target future issues or issues that didn't make it into the current release. (e.g. if we're releasing Facter 1.7.4, make sure there's a 1.7.5 version (or at least 1.7.x if there's isn't another bug release planned for the near future)\nCreate a public pair of queries for inclusion in the release notes/announcement. These allow easy tracking as new bugs come in for a particular version and allow everyone to see the list of changes slated for the next release (Paste their URLs into the \"Release story\" ticket):\n'project = XX AND affectedVersion = 'X.Y.Z', Save as \"Introduced in X.Y.Z\", click Details, add permission for Everyone\n'project = XX AND fixVersion = 'X.Y.Z', Save as \"Fixes for X.Y.Z\", click Details, add permission for Everyone\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32325", "fixedVersions": [], "id": "32325", "issueType": "Sub-task", "key": "PDOC-110", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-07T15:21:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Is the Jira tidy-up done for this release and prepared for the next one? (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2016-10-10T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "62450221ad6b7e006aa4e34c", "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "All of the old code was gutted at https://github.com/puppetlabs/puppet-strings/commit/7ae8e74ec571c84a31dd2aee42aaa86f09a8ece3, thus we don't really need to worry about the code associated with them. The rewrite commit is tracked as PDOC-63, and everything after that is associated with a ticket or is a (maint) commit.", "created": "2016-10-07T15:14:00.000000"}], "components": [], "created": "2016-10-06T16:36:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@87cf7cc"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9bzr:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_81538534_*|*_5_*:*_1_*:*_252053432_*|*_6_*:*_1_*:*_0"}], "description": "This is the first time in a while this has been done, but we can probably use https://github.com/puppetlabs/ticketmatch to do this.\n\nMake sure all git commits (besides maint) have Jira tickets and vice versa.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32522", "fixedVersions": [], "id": "32522", "issueType": "Sub-task", "key": "PDOC-109", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-07T15:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Reconcile git commits and JIRA tickets (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2016-10-10T13:16:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Changelog entry added for 0.99.0 and version bumped in the gemspec. Tests are all passing, and all tickets are resolved for this release. See https://puppet.atlassian.net/issues/?filter=22705", "created": "2016-10-07T15:18:00.000000"}], "components": [], "created": "2016-10-06T12:25:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2fee7a8e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9btb:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2865770_*|*_1_*:*_1_*:*_93617472_*|*_10007_*:*_1_*:*_291819_*|*_10009_*:*_1_*:*_6204_*|*_5_*:*_1_*:*_251810325_*|*_6_*:*_1_*:*_0"}], "description": "If there are any version dependencies expressed in the code base, make sure these are up to date. Strings will need its CHANGELOG and gemspec updated.\n\nAll tests (spec, acceptance) should be passing on all platforms.\n\nMove all items that should be moved from Ready for CI to Ready for Review\nHave all tickets been resolved (passed Functional Review)? If not please add any missing tickets to the current sprint's board.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32401", "fixedVersions": [], "id": "32401", "issueType": "Sub-task", "key": "PDOC-108", "labels": [], "originalEstimate": "PT0S", "parent": "32448", "parentSummary": "puppet-strings 0.99.0 Release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-07T15:18:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Is the code ready for release? (PDOC 0.99.0)", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "62450221ad6b7e006aa4e34c", "attachments": [], "comments": [{"author": "557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c", "body": "[~accountid:62450221ad6b7e006aa4e34c] to fill out sub tasks", "created": "2016-10-05T14:50:00.000000"}], "components": [], "created": "2016-10-05T14:49:00.000000", "creator": "557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@77fa19f4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-97"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9awn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_77501096_*|*_3_*:*_1_*:*_348882571_*|*_6_*:*_2_*:*_11110"}], "epicLinkSummary": "Initial increment for puppet strings and docs workflow", "estimate": "PT0S", "externalId": "32448", "fixedVersions": [], "id": "32448", "issueType": "Task", "key": "PDOC-107", "labels": [], "originalEstimate": "PT0S", "parent": "32434", "parentSummary": "Initial increment for puppet strings and docs workflow", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c", "resolution": "Fixed", "resolutionDate": "2016-10-10T13:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "puppet-strings 0.99.0 Release", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Immediately after creating this ticket I looked at https://github.com/puppetlabs/puppet-strings/blob/master/spec/unit/puppet-strings/json_spec.rb and realized JSON output is already covered in specs.\n\nI'm going to add a small test to ensure the {{--emit-json}} options are working, and we'll be pretty much set.", "created": "2016-09-30T17:36:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "PR at https://github.com/puppetlabs/puppet-strings/pull/106", "created": "2016-09-30T17:38:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "merged to master at: f1c7ad3", "created": "2016-10-01T07:06:00.000000"}], "components": [], "created": "2016-09-30T12:30:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "An acceptance test which parses various puppet / ruby constructs and compares output to the correct schema."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@104e1602"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-97"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz96gv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_199191454_*|*_1_*:*_1_*:*_7800725_*|*_10007_*:*_1_*:*_48447789_*|*_3_*:*_1_*:*_10661106_*|*_5_*:*_1_*:*_600846565_*|*_6_*:*_1_*:*_0"}], "description": "Since the JSON output of strings is what will be consumed by the forge, we want to add some more robust acceptance tests to ensure that no regressions occur. We can setup a schema and run tests similar to Facter's JSON schema test.", "epicLinkSummary": "Initial increment for puppet strings and docs workflow", "estimate": "PT0S", "externalId": "32388", "fixedVersions": ["PDOC 0.99.0"], "id": "32388", "issueType": "Bug", "key": "PDOC-106", "labels": [], "originalEstimate": "PT0S", "parent": "32434", "parentSummary": "Initial increment for puppet strings and docs workflow", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-03T14:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Acceptance tests for strings JSON output", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Woot!", "created": "2018-05-10T10:31:00.000000"}], "components": [], "created": "2016-09-29T17:31:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1005be7c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt8f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/May/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_41724895897_*|*_5_*:*_1_*:*_8906601097_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_9053071578"}], "description": "Currently the only docs for strings are [on github|https://github.com/puppetlabs/puppet-strings], which makes strings harder for users to discover and appear to be a less-than-first-class citizen in the puppet ecosystem.\n\nThis is publishing the style guide for Puppet Strings on docs.puppet.com and add any related documentation to the docs.\n\nBroader impact:\n * Other modules docs\n * Style guide\n * Etc", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32520", "fixedVersions": [], "id": "32520", "issueType": "Task", "key": "PDOC-105", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Done", "resolutionDate": "2018-08-21T12:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings docs on docs.puppet.com", "timeSpent": "PT0S", "updated": "2018-08-21T12:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "body": "I extended rubydoc.info per the description to create https://github.com/domcleal/puppetmodule.info, adding support to sync Puppet module data from the Forge and using Puppet Strings to generate docs instead of plain YARD.\n\nhttp://www.puppetmodule.info/ is the result.", "created": "2017-01-17T08:03:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Our plans are to integrate puppet-strings into the forge, not support in a standalone site.", "created": "2018-01-25T14:17:00.000000"}], "components": [], "created": "2016-09-29T17:25:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@540e2a47"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-98"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtpb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Jan/17"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_41723481914_*|*_6_*:*_1_*:*_0"}], "description": "Goal: provide a website that hosts puppet strings generated docs for modules hosted on the Forge.\n\nVia [~accountid:557058:b62c47a4-37e4-460d-8791-518bdfebf3e8]:\n{quote}Basically rubydoc.info, but for Puppet code. This would also help give\nus insights into popular modules that aren't on the forge.\n\nie. you can already do:\nhttp://www.rubydoc.info/github/puppetlabs/puppetlabs-apache/master\n\nBut this doesn't run strings. So the same service, for with strings!\n\nI think the source for that service is here:\nhttps://github.com/docmeta/rubydoc.info. I played around with it a\nlittle at Config Management Camp but not enough to get it actually\nworking. You could get the list of repos to seed from the BigTable\nGitHub dump.{quote}", "epicLinkSummary": "Puppet Strings Maintenance", "estimate": "PT0S", "externalId": "32562", "fixedVersions": [], "id": "32562", "issueType": "Story", "key": "PDOC-104", "labels": [], "originalEstimate": "PT0S", "parent": "32541", "parentSummary": "Puppet Strings Maintenance", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Won't Do", "resolutionDate": "2018-01-25T14:17:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet strings as a Service", "timeSpent": "PT0S", "updated": "2018-01-25T14:17:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-09-29T17:23:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Developer Experience"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4cf3b46f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Potential future puppet strings work"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz95qf:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1114848034_*|*_6_*:*_1_*:*_0"}], "description": "The collecting place for potential future puppet strings work.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32435", "fixedVersions": [], "id": "32435", "issueType": "Epic", "key": "PDOC-103", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Duplicate", "resolutionDate": "2016-10-12T15:04:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Potential future puppet strings work", "timeSpent": "PT0S", "updated": "2019-05-01T15:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "I think this should also include a bunch of example code for best practices for how to document all of the things strings supports. I've found https://github.com/peterhuene/strings-demo useful, but it includes some outdated practices that we shouldn't encourage. ", "created": "2016-10-25T12:39:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Questions/things about this work:\n\n1) What format should [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24]'s suggested docs take? I'm not familiar with how we write this sort of documentation, but something like 'Converting an existing module to strings' almost sounds like a blog post?\n\n2) Where should these docs live? This may depend on the format.\n\n3) [~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] what do you mean by 'Includes using strings as a docs coverage tool'? Does that just mean that after generating docs with strings, you'd be able to see where you lack in-code documentation?\n\n4) I'd like to borrow [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] for this to ensure quality of the docs.\n\nEdit: also, the modules team has started thinking about this as well. We should work with them on this, as they have far greater experience with modules and what good strings documentation style should look like.", "created": "2016-11-03T11:51:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "[~accountid:62450221ad6b7e006aa4e34c], I think you're right that there's a blog post here", "created": "2016-11-07T12:06:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "[~accountid:62450221ad6b7e006aa4e34c] +1 to blog post and could also be the basis for a HOWTO or similar in the strings repo/gem docs. And yes, we should link to these from the places [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] mentioned  ", "created": "2016-11-07T12:23:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] sounds good! What do you think is needed here as a predoc ticket?", "created": "2016-11-07T12:39:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Ah, for predocs that we might want to ticket, I think I'm looking for the examples listed above in the description. (Could use this ticket and link any others, but I guess I was thinking we don't usually work from Story tickets.)\n\nReally, I'd use that material + blog post + existing README to put things together, so it's all kinda predocs to me.", "created": "2016-11-07T12:48:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] ah, I see. The [existing readme|https://github.com/puppetlabs/puppet-strings/blob/master/README.md] actually already has good examples for how to document everything that strings supports (puppet classes, defined types, resource types, providers, 3x functions, 4x functions, and puppet language functions). I also recently added a 'further examples' section that goes into a little bit more depth about the {{@example}} tag and multi-line descriptions.\n\nIMO, the nuts and bolts of the docs are all already there, and now we just need a better narrative to pull them all together into a cohesive piece.  Converting an existing module to strings and adding strings docs to a new module is a matter of using those examples in the README to add the proper tags to each of those puppet / ruby constructs. I'm not totally sure what a full doc on those would look like, other than \"remove RDoc comments and add YARD comments\", for example.\n\nAt least, this is all where my thinking is at now. Does that make sense? (I do want to work on some sort of reference module that has a real module skeleton containing strings best practices, but that's a separate piece).", "created": "2016-11-07T13:32:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "I'm not totally sure what a full doc looks like yet either, [~accountid:62450221ad6b7e006aa4e34c]! :-D It sounds like predocs are in pretty good shape already, though, so maybe the next thing here is just for me to work through the README. Are you down to do a blog post? I am happy to look at it if you'd like to draft it.", "created": "2016-11-07T14:56:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Sure, I can give it a shot! I created PDOC-132 to track the blog post part of this.", "created": "2016-11-07T15:30:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Sweet, I made PDOC-133 to reflect editing the existing README and scoping/ticketing the work for other docs changes. I'm taking the DOCS component off of this ticket, because it specifically refers to the DOCS team and the story involves more than that. (DOCS component puts things on the Docs triage board, and it's not necessary for this to be there.)", "created": "2016-11-07T17:05:00.000000"}, {"author": "557058:fb0bff9d-dc4d-45f3-b875-a76700f9736c", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] [~accountid:62450221ad6b7e006aa4e34c] Please link related stories to Strings 1.0 Epic.", "created": "2016-11-16T14:09:00.000000"}], "components": [], "created": "2016-09-29T15:54:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3212dc61"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz9x5r:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4144442950_*|*_6_*:*_1_*:*_0"}], "description": "In addition to the [existing strings docs|https://github.com/puppetlabs/puppet-strings], we need to provide examples in docs for:\n* Converting an existing module to strings\n* Add strings docs to a module with no docs\n* Includes using strings as a docs coverage tool", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32387", "fixedVersions": [], "id": "32387", "issueType": "Story", "key": "PDOC-101", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Major", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Done", "resolutionDate": "2016-11-16T14:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet strings examples", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-09-29T15:51:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Developer Experience"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@348582e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-8"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Strings 1.0 release"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_purple"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo6of:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_2_*:*_4671084332_*|*_6_*:*_2_*:*_511137411"}], "description": "The things that need to be done to release the 1.0 version of puppet strings beyond completing PDOC-97.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32600", "fixedVersions": ["PDOC 1.0.0"], "id": "32600", "issueType": "Epic", "key": "PDOC-100", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Fixed", "resolutionDate": "2016-11-28T14:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings 1.0 release", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I think this should be handled as follows:\n\nA {{:statement}} function should be documented as having {{Undef}} return value (the implementation ensures this).\n\nA {{:rvalue}} function should be documented as having {{Any}} return value (unless there being a \\@return \\[T] tag)\n\nStretch goal:\n* log an error if function is of {{:statement}} type has a \\@return \\[T] other than T == Undef in any of its overloads\n\nThe {{:arity}} is really difficult to handle and difficult to understand for negative values. Just blurting out that arity is -n is not very helpful. Especially since this is often combined with overloading done by the logic in the function based on the types and number of given arguments. Attempting to map overloads documented in yard with arity gets complicated quickly. What could be done is automatically name the parameters if there is no name given to them in yard dags (that is something like $p1, $p2, ...). But since the only derivable data type and information is {{Any}} and a name like {{$p3}} any quality documentation would have to have been provided by the user in tags. These are the reasons we decided to not process arity at all.\n\nIf going ahead with this - there is (or at least was in 3.x when we supported Ruby 1.8.7) a utility to generate names from arity since Ruby 1.8.7 lacks the ability to describe a callable with parameter names.\n\nThe :raise adds no value what so ever since all functions can raise exceptions. And the existing ones pretty much all misuse the existing exception classes (like ParseError - which is supposed to be raised when there is an actual error with parsing and where you know a source location - 3.x functions have no clue). There is no function in puppet that uses :raise - I actually doubt that it is supported since I cannot find the {{:raise}} symbol in the source\n\nGiven that what can be automatically generated from the information in a 3.x function is of such low value is it really meaningful to do any of this? I think it is better to encourage users to migrate 3.x functions to 4.x since the automatically generated documentation is then of good quality. If not wanting to migrate, the other option is to provide all the details in yard tags.\n\nI think a scheme like automatically naming parameters can actually be confusing as old style documentation has no tags and there is no way to find the names of parameters - thus, we would output the generated names like $p1, $p2, while the documentation talks about say $port, and $domain - totally confusing. And, if a user invests the time to actually tag - then the generated names would be suppressed anyway.\n", "created": "2016-09-28T19:18:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] all very good points. Perhaps it's best if we require explicit documentation with yard tags for 3.x documentation rather than putting any extra effort into auto-generating docs for this, like you said. I think I'll go ahead and close this out, and if we get asked for this we can always reopen.", "created": "2016-09-29T00:05:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:62450221ad6b7e006aa4e34c] Agree.", "created": "2016-09-29T07:51:00.000000"}], "components": [], "created": "2016-09-28T16:54:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "When run on a 3.x function, strings will include all {{newfunction}} options in its output."}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3b77c45d"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz945b:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_25956884_*|*_6_*:*_1_*:*_0"}], "description": "Example function:\n{code}\nPuppet::Parser::Functions::newfunction(\n  :raise,\n  :type => :statement,\n  :arity => 1,\n  :doc => <<-DOC\nRaises a `Puppet::Error` exception.\n@param [String] message The exception message.\n@return [Undef]\n@example Raise an exception.\n  raise('nope')\nDOC\n) do |args|\n  raise Puppet::Error, args[0]\nend\n{code}\n\nIn this sample, strings ignores all of the options for {{newfunction}} except {{:doc}}. It should also pick up the rest of the options and display them.\n\nFrom Peter:\n\nThe handler should check the type when scanning the options and set it on the function (ignored for 4.x functions since this is a 3.x construct) and probably should display it in the box info for functions", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32424", "fixedVersions": [], "id": "32424", "issueType": "Bug", "key": "PDOC-99", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Won't Fix", "resolutionDate": "2016-09-29T00:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings ignores 3.x function options", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-09-21T12:54:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Developer Experience"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a590dba"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Strings Maintenance"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "In Progress"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyo6yn:"}], "description": "This epic collects potential future work around puppet strings to improve life for the puppet docs team.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32541", "fixedVersions": [], "id": "32541", "issueType": "Epic", "key": "PDOC-98", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "status": "Developing", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings Maintenance", "timeSpent": "PT0S", "updated": "2019-05-28T17:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-09-21T12:30:00.000000", "creator": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Developer Experience"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7050811c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Initial increment for puppet strings and docs workflow"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymvh3:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4068522609_*|*_6_*:*_1_*:*_0"}], "description": "This epic tracks the work required for puppet strings to be minimally useful to the Puppet docs team.\n\nPotential future work for puppet strings and improving its utility for the docs team is tracked in PDOC-98\n\n*Acceptance criteria:*\n# Running from bundler in the docs team workflow, puppet strings can consume the puppet repo to produce JSON output for resource types/providers and functions\n# Confirmation that JSON format is sufficient\n\nRaw notes to be cleaned up later:{quote}\nGenerated puppet references, for each .y release there is a tool that generates docs\nProblem is the embedded docs in the puppet repo are in different formats\nGoal is that strings can cope with the worst of these formats\n\nresource types and providers: change frequently, important to experienced users\n- current tooling is extremely brittle\n- done: you can point `puppet strings #{puppet dir} --json` at puppet core --> goes into updated versions of existing templates, which live in puppet-docs/lib\n-- output needs to be mostly the same\n-- comprehensive: updating the actual docstrings\n{quote}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32434", "fixedVersions": ["PDOC 0.99.0"], "id": "32434", "issueType": "Epic", "key": "PDOC-97", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Critical", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "resolution": "Fixed", "resolutionDate": "2016-11-07T13:39:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Initial increment for puppet strings and docs workflow", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Maybe something for the future?", "created": "2018-03-05T12:15:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Update! Some of these generated docs no longer need to be generated, because:\n* they are not useful for most users (indirection)\n* they are stable docs and can be handled as more-or-less static docs (metaparameter, report)\n* they aren't in the docs repo or recent docs memory at all (providers).\n\nI am in the process of removing the above docs from the docs generation tooling and the puppet-docs repo.\n\nThe docs that we WOULD like Strings to handle are:\n*configuration: Strings does NOT generate this, and tech pubs would love for Strings to do this.\n* function: Strings generates this, but may have some issues? I need to look at a diff, it might be fine actually.\n* type: Strings generates this, but with numerous problems.\n\n", "created": "2019-08-12T15:18:00.000000"}], "components": ["DOCS"], "created": "2016-09-15T17:52:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@110cd13e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Strings should document core puppet references"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "In Progress"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt6v:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}], "description": "`puppet doc` provided a facility for creating reference docs from {{lib/puppet/reference}}. That includes the following:\n\n{code}\n[16:46:24] whopper:~/Coding/puppet \u2039master*\u203a \u00bb bundle exec puppet doc --list\nconfiguration - A reference for all settings\nfunction - All functions available in the parser\nindirection - Indirection types and their terminus classes\nmetaparameter - All Puppet metaparameters and all their details\nproviders - Which providers are valid for this machine\nreport - All available transaction reports\ntype - All Puppet resource types and all their details\n{code}\n\nStrings currently handles functions, providers, and types. The others live at https://puppet.com/docs/puppet/latest/ (example, https://puppet.com/docs/puppet/latest/indirection.html) (link updated by Jean Bond 12 August 2019)\n\nStrings has never supported indirection, metaparameters, reports or configuration docs. The docs team will need these to be functional to populate the site.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32433", "fixedVersions": [], "id": "32433", "issueType": "Epic", "key": "PDOC-96", "labels": ["generated-docs"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "status": "Developing", "statusCategory": "In Progress", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings needs to document core puppet references (indirection, configuration, metaparameter, etc)", "timeSpent": "PT0S", "updated": "2019-08-30T15:15:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "Word. We'll want this for docs integration stage 2 (types and providers reference), but it's not relevant to stage 1 (function reference). ", "created": "2016-10-06T19:15:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-09-14T13:56:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Strings should parse the following provider correctly (i.e, it should group the combined 'osfamily => redhat and operatingsystemmajrelease => 7 defaultfors together:\n\n{code}\nPuppet::Type.type(:database).provide :linux do\n  confine 'operatingsystem' => 'fedora'\n  defaultfor :osfamily => 'linux'\n  defaultfor :osfamily => 'RedHat', :operatingsystemmajrelease => '7'\n  commands :database => '/usr/bin/database'\n\n  desc 'The database provider on Linux.'\n\n  # ...\nend\n{code}\n\nJSON output should be:\n\n{code}\n      \"defaults\": [\n        [\n          [\n            \"osfamily\",\n            \"linux\"\n          ]\n        ],\n        [\n          [\n            \"osfamily\",\n            \"RedHat\"\n          ],\n          [\n            \"operatingsystemmajrelease\",\n            \"7\"\n          ]\n        ]\n      ],\n{code}"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7f6a5334"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8ulz:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Bug Fix"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Strings previously did not handle multiple, combined `defaultfor` statements in puppet providers. This fix updates the logic around storing these statements so that they can be displayed correctly. This change includes a breaking change to the JSON schema."}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Oct/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_66819011_*|*_1_*:*_1_*:*_2323605719_*|*_10007_*:*_1_*:*_9269977_*|*_3_*:*_1_*:*_9351330_*|*_5_*:*_1_*:*_4054105898_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_21955552"}], "description": "Note: this also affects Peter's rewrite.\n\nExample: the systemd service provider:\n\n{code}\n  defaultfor :osfamily => [:archlinux]                                                                                                                                                \u2502\n  defaultfor :osfamily => :redhat, :operatingsystemmajrelease => \"7\"                                                                                                                  \u2502\n  defaultfor :osfamily => :redhat, :operatingsystem => :fedora                                                                                                                        \u2502\n  defaultfor :osfamily => :suse                                                                                                                                                       \u2502\n  defaultfor :operatingsystem => :debian, :operatingsystemmajrelease => \"8\"                                                                                                           \u2502\n  defaultfor :operatingsystem => :ubuntu, :operatingsystemmajrelease => [\"15.04\",\"15.10\",\"16.04\",\"16.10\"]                                                                             \u2502\n  defaultfor :operatingsystem => :cumuluslinux, :operatingsystemmajrelease => [\"3\"]\n{code}\n\n... but strings documents this as:\n\n{code}\nDefault Provider For\noperatingsystem - debian\noperatingsystemmajrelease - ['5','6','7']\n{code}", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32324", "fixedVersions": ["PDOC 1.0.0"], "id": "32324", "issueType": "Bug", "key": "PDOC-95", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-12T17:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings doesn't handle multiple `defaultfor`s in providers correctly", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Thanks for the report - we are aware of many errors in the current version of Puppet Strings. A major overhaul and update to a later yard is in the process. We are planning to have a new release of Puppet Strings shortly. When that is out it would be great if you could test if this is then still a problem.\n\nStay tuned...", "created": "2016-09-14T09:21:00.000000"}, {"author": "557058:30b5c31c-aff1-4b34-8c3e-742c2327385d", "body": "Will do, thanks for the update Henrik!", "created": "2016-09-14T10:37:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "As of 0.99.0, there's no indication that this is still a bug in the rewrite. I'm closing this ticket out, but in the unlikely event that someone encounters this again, feel free to reopen.", "created": "2016-11-03T13:30:00.000000"}], "components": ["DOCS"], "created": "2016-09-14T08:08:00.000000", "creator": "557058:30b5c31c-aff1-4b34-8c3e-742c2327385d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@246e1ac3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8u47:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_4339330222_*|*_6_*:*_1_*:*_0"}], "description": "Running strings on a defined type with a type results in a stack trace.\n\n\n{code}\n$ puppet strings yardoc\n[error]: Unhandled exception in PuppetX::PuppetLabs::Strings::YARD::Handlers::DefinedTypeHandler:\n[error]:   in `modules/multipath/manifests/device_entry.pp`:101:\n\ndefine multipath::device_entry (\n  String $features = '',\n  ) {\n}\n\n[error]: ArgumentError: wrong number of arguments (1 for 2)\n[error]: Stack trace:\n\t/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/types/type_parser.rb:55:in `interpret_any'\n\t/opt/puppetlabs/puppet/lib/ruby/gems/2.1.0/gems/puppet-strings-0.4.0/lib/puppet_x/puppetlabs/strings/yard/handlers/defined_type_handler.rb:19:in `block (2 levels) in <class:DefinedTypeHandler>'\n\t/opt/puppetlabs/puppet/lib/ruby/gems/2.1.0/gems/puppet-strings-0.4.0/lib/puppet_x/puppetlabs/strings/yard/handlers/defined_type_handler.rb:13:in `each'\n\t/opt/puppetlabs/puppet/lib/ruby/gems/2.1.0/gems/puppet-strings-0.4.0/lib/puppet_x/puppetlabs/strings/yard/handlers/defined_type_handler.rb:13:in `block in <class:DefinedTypeHandler>'\n\t/opt/puppetlabs/puppet/lib/ruby/gems/2.1.0/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:114:in `block (2 levels) in process'\n\t/opt/puppetlabs/puppet/lib/ruby/gems/2.1.0/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:112:in `each'\n\nError: undefined method `map' for nil:NilClass\nError: Try 'puppet help strings yardoc' for usage\n{code}\n", "environment": "* puppet-agent-1.6.2-1.el7.x86_64\n* yard 0.8.7\n* puppet-strings 0.4.0\n* RHEL 7 x86_64", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32400", "fixedVersions": [], "id": "32400", "issueType": "Bug", "key": "PDOC-94", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:30b5c31c-aff1-4b34-8c3e-742c2327385d", "resolution": "Cannot Reproduce", "resolutionDate": "2016-11-03T13:30:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings crashes when documenting defined type with parameters with types", "timeSpent": "PT0S", "updated": "2016-11-03T13:30:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "62450221ad6b7e006aa4e34c", "created": "2016-10-13T13:42:00.000000", "name": "screenshot-1.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12372"}], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Released with puppet-strings 1.0.0.", "created": "2016-11-28T14:21:00.000000"}], "components": [], "created": "2016-09-13T11:20:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5e158170"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8t9r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2600547793_*|*_10007_*:*_1_*:*_8584782_*|*_3_*:*_1_*:*_442021_*|*_5_*:*_1_*:*_1801788156_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2169516385"}], "description": "Currently, the search box specified in the {{fulldoc}} template overlaps with the first function / class / etc item in the list below. We'll need to figure out how to overwrite YARD's default CSS for that box.", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32423", "fixedVersions": ["PDOC 1.0.0"], "id": "32423", "issueType": "Bug", "key": "PDOC-93", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-11-07T17:52:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Search box overlaps list items below on lefthand fulldoc navigator", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-09-13T11:17:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7294a5df"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8t9b:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2083332035_*|*_5_*:*_1_*:*_256797292_*|*_6_*:*_1_*:*_0"}], "description": "Strings is not a puppet module and should not be named as such. GitHub will indefinitely redirect from the old repo name to the new one, so we won't break anyone by doing this. Some references will need to be updated in internal docs, however. We'll need to track these down and make note of them.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32386", "fixedVersions": ["PDOC 0.99.0"], "id": "32386", "issueType": "Task", "key": "PDOC-92", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Fixed", "resolutionDate": "2016-10-07T13:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Rename the puppetlabs-strings repo to puppet-strings", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Also todo: figure out if docs needs this or if this is a 'nice to have'. If the latter, it probably doesn't belong in this epic.", "created": "2016-09-13T11:23:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "We need to have some research done on the validity of this use case. It seems like it could be a good idea but there's no point in doing it if no one is going to use it.", "created": "2018-01-25T14:36:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Throwing one possible use case at this:\nIn PE I would like to be able to browse the documentation for the code that is deployed in an environment.\n", "created": "2018-01-26T03:17:00.000000"}, {"author": "623a4a827910a200718ac35d", "body": "We use strings to generate whole-environment documentation as part of a CI job when we release updates to environments and serve it out via GitLab pages from our internal GitLab instance. It works fairly well, but there are some improvements that would make it a lot better (particularly for our Puppet \"end-users\" that work mostly with Hiera data and not the code). Independent per-module docs are far less useful for us.\n\nKey improvements that would directly and noticeably improve the end user experience in my environment (with regards to documentation):\n* Ability to handle any {{README.md}} optionally found in each module, and somehow make them available/visible in the whole-environment view.\n* Possibly related to the above, a module-level/centric search/list view in the left pane.\n* Documentation support for custom data types.\n* Links from custom data types used in parameter documentation to the place where the custom data type is documented.\n* Documentation for facts\n* The ability to distinguish a fact as having a stable \"API\" vs. an unstable one (or, \"public\" vs. \"private\"). While all facts are obviously always visible and usable from a technology standpoint, it would be good to clearly communicate expectations around whether the fact was intended for broader consumption (e.g. in external reporting) or only was intended for internal use in the module.\n* A type of \"index page\" where all class parameters are all collected and shown in one place so people can look to see if options are exposed to do something, even if they might not be familiar with what module it would found in or exactly what it would be called.\n\nI know some of these require some more fundamental things to be addressed in Strings (e.g. fact documentation) but I wanted to not only be clear that there is definitely a valid use case for this but also some of the key things that feel lacking to make it a more complete end-user experience.\n\nThat said, the Strings documentation we do enjoy now is great, far better than what we ever had with the old rdoc system (when it worked) and still provides a lot of value to our end users, so thank you for the work thus far on it.", "created": "2018-01-27T08:11:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:623a4a827910a200718ac35d]\n\nThanks for your comments! \n\nHaving Facts and Type aliases included in Strings is _definitely_ on the near-term wishlist. \n\nCan you clarify what you mean by the ability to \"handle _any_ README.md\" ? Are you referring to multiple READMEs in different directories? Other markdown files?\n\nThe other things you mentioned sound good, too, for the most part. Unfortunately resources are a bit low right now so we'll get to what we can but it may not be all of it.", "created": "2018-04-12T07:17:00.000000"}], "components": [], "created": "2016-09-13T10:59:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7aa103"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtp3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jan/18"}], "description": "Henrik's description of the use case:\n\nDocument an environment (i.e. layout as when compiling) to generate browseable docs for what is installed in an env. In this mode I can imagine wanting to skip certain modules, or regenerating one or a list of them (not sure how that plays with yard's web server and regeneration though).\n\nI believe at present, Strings will do this but only when using the webserver code path. We want to make this possible without having to also spin up the server.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32399", "fixedVersions": [], "id": "32399", "issueType": "Improvement", "key": "PDOC-91", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should be able to document an environment", "timeSpent": "PT0S", "updated": "2019-05-01T15:17:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I think there are two fundamental modes of operation:\n* Document an environment (i.e. layout as when compiling) to generate browseable docs for what is installed in an env. In this mode I can imagine wanting to skip certain modules, or regenerating one or a list of them (not sure how that plays with yard's web server and regeneration though).\n* Document a single module - for this, the module is typically not installed in an environment (there is no env, no real modulepath, etc.). Difficult things here are handling references to things in other modules (OTOH, Strings currently does not do much processing of references).\n\nWhich of the use cases is it this ticket is intended for?\n", "created": "2016-09-13T07:20:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] whoops, I wrote this as I was running out the door :). We actually talked about both of those modes of operation with Peter. This ticket is meant to track the second, 'single module' use case. I just filed PDOC-91 to track the case of documenting an environment.\n\nAlso todo: figure out if docs needs this or if this is a 'nice to have'. If the latter, it probably doesn't belong in this epic.", "created": "2016-09-13T10:59:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This is what strings currently does, sans a \"cd\" command to change into any module's directory.", "created": "2018-01-25T14:37:00.000000"}], "components": [], "created": "2016-09-12T17:43:00.000000", "creator": "62450221ad6b7e006aa4e34c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@27529401"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-98"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtov:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_43192434584_*|*_6_*:*_1_*:*_0"}], "description": "Right now, strings will either parse a specific named file or everything in the current directory. There should be a {{puppet strings module}} command of some sort to document a specific module", "epicLinkSummary": "Puppet Strings Maintenance", "estimate": "PT0S", "externalId": "32599", "fixedVersions": [], "id": "32599", "issueType": "Improvement", "key": "PDOC-90", "labels": [], "originalEstimate": "PT0S", "parent": "32541", "parentSummary": "Puppet Strings Maintenance", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "62450221ad6b7e006aa4e34c", "resolution": "Won't Do", "resolutionDate": "2018-01-25T14:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should be able to document a single, specific module", "timeSpent": "PT0S", "updated": "2018-01-25T14:37:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Thanks for the report. We are aware of a number of problems with the current version of Puppet Strings and we are in the process of fixing up a lot of those issues.\nNot sure if this is one of the known issues - we will look into this.\n\n", "created": "2016-09-02T16:51:00.000000"}], "components": [], "created": "2016-09-02T11:38:00.000000", "creator": "623a480b9b54ec0068b0724e", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7c04e0a3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt3b:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Sep/16"}], "description": "When there's an error raised during processing, I expect the exit code is not 0.\n\nSample output from rake strings:generate (same happens with puppet strings):\n\n{code}\nsnafu109@foswiki:~/puppet-nginx$ bundle exec rake strings:generate\n[error]: Exception occurred while generating 'nginx/resource/vhost.html'\n[error]: ParseErrorWithIssue: Syntax error at end of file\n[error]: Stack trace:\n\t/var/lib/gems/2.3.0/gems/puppet-4.6.2/lib/puppet/pops/parser/parser_support.rb:127:in `on_error'\n\t/var/lib/gems/2.3.0/gems/puppet-4.6.2/lib/puppet/pops/parser/lexer2.rb:717:in `scan'\n\t/usr/lib/ruby/vendor_ruby/racc/parser.rb:331:in `_racc_yyparse_c'\n\t/usr/lib/ruby/vendor_ruby/racc/parser.rb:331:in `yyparse'\n\t/var/lib/gems/2.3.0/gems/puppet-4.6.2/lib/puppet/pops/parser/parser_support.rb:240:in `_parse'\n\t/var/lib/gems/2.3.0/gems/puppet-4.6.2/lib/puppet/pops/parser/parser_support.rb:134:in `parse_string'\n\nFiles:          17\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     9 (    3 undocumented)\nPuppet Defined Types:     8 (    3 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     0 (    0 undocumented)\n 64.71% documented\nsnafu109@foswiki:~/puppet-nginx$ echo $?\n0\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32539", "fixedVersions": [], "id": "32539", "issueType": "Bug", "key": "PDOC-89", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a480b9b54ec0068b0724e", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should exit 1 when an error occurs", "timeSpent": "PT0S", "updated": "2019-08-06T17:49:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Todo: investigate what we have setup for strings in CI right now. We'd like to run the latest version of strings against a small fixture suite (acceptance). A 'don't break strings' acceptance test in puppet may be the way to do this.", "created": "2016-09-12T17:27:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "We may need a test matrix of puppet versions as well.", "created": "2016-09-13T07:23:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "I did a sweep of the project with [SimpleCov|https://github.com/colszowka/simplecov] and found that spec coverage is actually very good. Most files are fully covered, except a few which I just put a PR up for: https://github.com/puppetlabs/puppet-strings/pull/105\n\nI think the remaining uncovered bits are best covered by acceptance-level tests. We actually do already have a matrix of puppet and ruby versions, but I'm not sure what the test actually entails. Looking into that now.", "created": "2016-09-29T15:49:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:62450221ad6b7e006aa4e34c] good news. Also to consider are the puppet versions it supports and new language features/regressions. ", "created": "2016-09-29T16:56:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] indeed, and there is actually already an acceptance test that parses simple fixtures that we can use to hold samples of new language features. They'll just have to be gated on puppet version.", "created": "2016-09-29T17:01:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Notes from sync with EricT:\n\nThe level of spec tests and HTML acceptance present with the PR linked above is sufficient. The higher priority is adding acceptance-level tests for JSON output, as this is what will be consumed by the forge. See PDOC-106.\n", "created": "2016-09-30T12:33:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "merged to master at: 7c475a5", "created": "2016-10-03T05:53:00.000000"}], "components": [], "created": "2016-07-07T09:51:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e1286d3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-97"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7eov:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_30711610_*|*_1_*:*_1_*:*_5816152020_*|*_10007_*:*_1_*:*_235568972_*|*_3_*:*_1_*:*_74203216_*|*_5_*:*_1_*:*_600884715_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_1462974762"}], "description": "If the docs team is going to rely on strings, we need to make sure that new releases of puppet do not break it in such a way that it becomes unusable. That means that new releases of puppet cannot cause strings to have any of the following issues:\n\n# Fail to finish running\n# Emit corrupted JSON or other bad things\n# Any of the requirements defined by the PDOC-59 epic are no longer met (e.g. failing to pick up function definitions, etc)\n\nTesting for strings is incredibly minimal right now. At the very least, we need to improve unit tests and add unit tests for JSON output. We probably also need to add some actual acceptance testing. \n\nIt may be that better testing is all that's needed here, but before the docs team can integrate strings we have to be able to assure that it's maintained properly along with new releases of puppet.\n", "epicLinkSummary": "Initial increment for puppet strings and docs workflow", "estimate": "PT0S", "externalId": "32398", "fixedVersions": ["PDOC 0.99.0"], "id": "32398", "issueType": "Task", "key": "PDOC-88", "labels": [], "originalEstimate": "PT0S", "parent": "32434", "parentSummary": "Initial increment for puppet strings and docs workflow", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-10-03T14:25:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Create a test plan for ensuring strings support going forward", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Because we have not been using Strings to generate the documentation for functions in puppet we ended up using a pattern where the documentation for 4.x functions are kept in 3.x stubs. In order to reduce the burden of maintaining two copies of the documentation many of the 4.x functions simply have \"documentation maintained in 3.x stub\" as their documentation. In order to really fix this, all of the 3.x stubs needs to be copied over to the 4.x (actual) implementation of the function. When doing so, the text needs to be edited from the \"free form, I hope this works\" to yard/markdown. Some 4.x functions are documented in both the 3.x stub as well as in the 4.x implementation. For those there is no guarantee that the two copies have not drifted apart. A manual review must be done because the formats are different (side by side viewing in an editor kind of works).\n\nWhen this is done, the 3.x stubs can be deleted. Which I guess is what PDOC-85 is about (also avoiding getting the same documentation twice, or the placeholder \"documentation maintained in 3.x stub\" instead of the documentation).", "created": "2016-09-13T07:29:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Not sure whose job this actually would be. It looks like all the documentation has been migrated to puppet 4 functions but at least some of it may not be written in a way YARD will understand. We probably want to get to a place where Strings is at least being used in modules first to prove it as a viable tool.", "created": "2018-04-12T03:14:00.000000"}], "components": [], "created": "2016-07-07T09:31:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ad74a85"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymton:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Sep/16"}], "description": "We should do a quick pass to make sure that all our function documentation is written in a format that strings can support. Basically this means two things:\n\n# Is it all valid Markdown that the parser used by YARD can handle\n# Are the YARD tags used supported by strings\n\nHopefully this shouldn't be a big effort, just a few minor corrections if anything.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32538", "fixedVersions": [], "id": "32538", "issueType": "Task", "key": "PDOC-87", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Ensure our internal functions, types, and providers are documented in a way that's compatible with strings", "timeSpent": "PT0S", "updated": "2019-05-01T15:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I'd just like to ask if this is a good idea.\n\nThe main reason is that approx 2 years ago, Strings was going to be the new hotness so we all started converting our code to something that was YARD/Strings compatible.\n\nNow, we're going *back* to Markdown (which is abysmal by the way).\n\nThe @param and @example functionality of YARD is *good* and I don't replacing this with Markdown in a way that is not going to be more trouble than it is worth.", "created": "2016-08-01T17:31:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "We are absolutely keeping the meta tags from yard (was never under discussion). The \"using markdown\" means that the *text* is in markdown format as opposed to the Ruby Doc text format, (or the sorry mangled/hacked version of that used by the old documentation system in puppet). There is a reasonably large overlap between RubyDoc format, and Markdown for the most commonly used markup, but there are subtle differences. (Enough differences that people are driven crazy as markup is by far the dominating markup syntax for text in use).\n\n[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] - does that make it better?", "created": "2016-08-02T15:43:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Thanks for the update. Yes, this helps assuage my fears.", "created": "2016-08-02T16:00:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "This is marked \"ready for merge\", but there is no link to a PR, and there seems to be no PR for this ticket in the repository ?!?\n\nIs this because it is part of the big rewrite PR ?", "created": "2016-09-13T04:38:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] ah yeah - this happened as part of the rewrite.", "created": "2016-09-18T22:32:00.000000"}], "components": [], "created": "2016-07-07T08:43:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@8ca6b34"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-59"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7en3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Aug/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_213032551_*|*_1_*:*_1_*:*_5388145476_*|*_10007_*:*_1_*:*_323822390_*|*_3_*:*_1_*:*_431985839_*|*_5_*:*_1_*:*_1867625001_*|*_6_*:*_1_*:*_0"}], "description": "Right now, without a .yardopts file dropped in the root directory of what you're documenting, strings  will default to parsing comments with rdoc. This is not the desired behavior, as we now document our functions with Markdown and are encouraging this as the new standard. We need to modify strings to default to Markdown, preferably in a way that it is still configurable by the user to use rdoc instead.", "epicLinkSummary": "Improve behavior of Strings to support integration into Docs workflow ", "estimate": "PT0S", "externalId": "32598", "fixedVersions": ["PDOC 0.99.0"], "id": "32598", "issueType": "Improvement", "key": "PDOC-86", "labels": [], "originalEstimate": "PT0S", "parent": "32534", "parentSummary": "Improve behavior of Strings to support integration into Docs workflow ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-09-18T22:32:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Make Markdown the default format", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Todo: talk to docs", "created": "2016-09-12T17:14:00.000000"}, {"author": "557058:db3c8c5c-5825-4424-a788-64c2fa922e24", "body": "[~accountid:623c08e1562ab90069f8aed4] believes this unnecessary and we'll fix it in the templates", "created": "2016-09-21T12:38:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:db3c8c5c-5825-4424-a788-64c2fa922e24] [~accountid:623c08e1562ab90069f8aed4] How exactly? We have three cases:\n\n* documented in both 3.x stub and 4.x\n* documented in 3.x, and 4.x contains a reference to see the 3.x stub - that reference looks just like documentation\n* documented in 4.x only (although we no longer have any in this category)\n\nI can imagine that if there is a 3.x function with the same name, then that wins - is that what we will do in the templates?", "created": "2016-09-22T06:35:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "My working assumption is that we have no items in the second category. (This might not be true, but we can make it true with a puppet PR as soon as I have a working function reference generator.) \n\nThe plan is to prefer v4 functions, to pave the way to remove v3 functions. Given JSON that includes both versions of a given function, this is simple to do in the template, and requires no add'l work in Strings itself. If I see two versions of a given function and only one of them is v4, I'll ignore the other. ", "created": "2016-10-06T19:20:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The right thing to do is:\n\n* move all 3.x stubs' documentation to 4.x and add/fix the markup to yard\n* remove the 3.x stubs\n\nUntil that is done however (say, when making the function reference generator work) the sane thing to do is to use the 3.x variant if one exists.\n\n", "created": "2016-10-07T05:11:00.000000"}], "components": [], "created": "2016-07-06T09:25:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f7d6c4b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-59"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7dr3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5903402718_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_761023519"}], "description": "Because we didn't want to maintain documentation in two places, many of the core Puppet functions are implemented in the 4x style but have a matching 3x stub with contains all the documentation. We need to ensure that strings can handle this in a way that makes sense, combining the relevant information from both, taking only the doc string from the 3x version, or something similar.\n\nh4. Example:\n\nh5. The 4.x implementation of {{contain}} in {{lib/puppet/functions/contain.rb}}:\n{code}\n# Called within a class definition, establishes a containment\n# relationship with another class\n# For documentation, see the 3.x stub\n#\nPuppet::Functions.create_function(:contain, Puppet::Functions::InternalFunction) do\n...\n{code}\n\nh5. The 3.x stub of {{contain}} in {{lib/puppet/parser/functions/contain.rb}}:\n\n{code}\n# Called within a class definition, establishes a containment\n# relationship with another class\n\nPuppet::Parser::Functions::newfunction(\n  :contain,\n  :arity => -2,\n  :doc => \"Contain one or more classes inside the current class. If any of\n...\n) do |classes|\n  # Call the 4.x version of this function in case 3.x ruby code uses this function\n  Puppet.warn_once(:deprecation, '3xfunction#contain', \"Calling function_contain via the Scope class is deprecated. Use Scope#call_function instead\")\n  call_function('contain', classes)\nend\n{code}", "epicLinkSummary": "Improve behavior of Strings to support integration into Docs workflow ", "estimate": "PT0S", "externalId": "32561", "fixedVersions": ["PDOC 0.99.0"], "id": "32561", "issueType": "Improvement", "key": "PDOC-85", "labels": [], "originalEstimate": "PT0S", "parent": "32534", "parentSummary": "Improve behavior of Strings to support integration into Docs workflow ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Won't Fix", "resolutionDate": "2016-09-21T12:38:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Handle the case of 4x functions and 3x stubs", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:613151bd-b161-4bc3-9e32-335fdcef4d89", "body": "I believe this is currently possible if you add \\-n (--no-output) to the .yardopts file. But it would be nice to be able to do it without the need for the yardopts file.\n\nWe would like to use Puppet Strings to generate documentation for Forge modules automatically. It would be significantly less painful if we could generate the JSON using a configuration to puppet-strings rather than having to ensure every module has a .yardopts file with the \\-n flag.", "created": "2016-07-07T11:25:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "After Peter's rewrite this is now possible with the {{emit-json}} and {{emit-json-stdout}} options. Last thing to do is clear the new JSON schema (https://github.com/puppetlabs/puppet-strings/blob/master/JSON.md) with docs.\n\nEdit: actually, PDOC-83 tracks the schema itself. This ticket is intended to just track the JSON output option, which now works. Resolving.", "created": "2016-09-18T22:34:00.000000"}], "components": [], "created": "2016-07-05T12:36:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@414bb90b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-59"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7d2v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_213021877_*|*_1_*:*_1_*:*_5978501816_*|*_10007_*:*_1_*:*_324233606_*|*_10009_*:*_1_*:*_265625_*|*_5_*:*_1_*:*_1867353327_*|*_6_*:*_1_*:*_0"}], "description": "Whether it's a rake task, a subcommand, or both we need to add a way to generate only the single JSON file and not the entire doc directory of HTML pages. I'm not sure if it's possible to also prevent yard from producing the additional output like the .yardoc directory, but either way we need to clearly define what will be generated and where so that it can be automatically scrapped as appropriate.", "epicLinkSummary": "Improve behavior of Strings to support integration into Docs workflow ", "estimate": "PT0S", "externalId": "32597", "fixedVersions": ["PDOC 0.99.0"], "id": "32597", "issueType": "Improvement", "key": "PDOC-84", "labels": [], "originalEstimate": "PT0S", "parent": "32534", "parentSummary": "Improve behavior of Strings to support integration into Docs workflow ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-09-18T22:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add the ability to generate only JSON", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Todo: confirm Peter's schema works for docs. Will follow up with Nick F this week.", "created": "2016-09-12T17:23:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "[~accountid:62450221ad6b7e006aa4e34c] [~accountid:623c08e1562ab90069f8aed4] is this done?  what needs to happen to resolve?", "created": "2016-10-05T13:13:00.000000"}], "components": [], "created": "2016-07-05T10:33:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b466a39"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-97"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymthb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5986289721_*|*_10009_*:*_1_*:*_1438090637_*|*_5_*:*_1_*:*_429240034_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_537190086"}], "description": "In order to ensure that strings produces JSON in a way that's consistent and workable. The language and docs teams should work together to define a schema that makes sense and will suit the needs of the docs team.\n\nAs part of this work, we need to ensure that the JSON output generated does not contain any significant errors or glitches and that things are reliably in the right place so it can be used by the docs team.", "epicLinkSummary": "Initial increment for puppet strings and docs workflow", "estimate": "PT0S", "externalId": "32385", "fixedVersions": ["PDOC 0.99.0"], "id": "32385", "issueType": "Improvement", "key": "PDOC-83", "labels": [], "originalEstimate": "PT0S", "parent": "32434", "parentSummary": "Initial increment for puppet strings and docs workflow", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-10-05T14:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Define a proper JSON schema for strings", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Todo: make sure runtime dependencies are managed in the gemspec rather than the Gemfile and test this.", "created": "2016-09-12T17:23:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Just worked with Nick on this. His workflow is as follows:\n\nBundle install puppet-strings in the puppet-doc repo (it is in the Gemfile). This repo holds a version of the puppet source in its vendor directory. Then, point strings at that source with {{bundle exec puppet-strings generate ./vendor/puppet/lib/puppet/**/*.rb}} (for functions)\n\nWe determined that this works correctly for Puppet 4.7.0. When running strings against 4.2.2, strings errored out with no explanation. Though we should probably look into that, it doesn't affect the docs workflow as they will not be regenerating docs for older versions of puppet.", "created": "2016-10-07T13:02:00.000000"}], "components": [], "created": "2016-07-05T08:45:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@56a38331"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-97"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7cun:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_215069_*|*_1_*:*_1_*:*_5992586888_*|*_10007_*:*_1_*:*_323964876_*|*_5_*:*_1_*:*_254218233_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_1826271528"}], "description": "Because the docs team would like to use strings in their automated doc extraction scripts, we need to ensure that the gem can be used and managed with bundler in that context. It needs to work out of the box and can\u2019t contaminate the user\u2019s environment outside of bundler. There's not really any reason to believe that this won't work, but since it's essential we should verify it.\n\nThe scripts in question live [here|https://github.com/puppetlabs/puppet-docs/tree/master/lib/puppet_references]\n", "epicLinkSummary": "Initial increment for puppet strings and docs workflow", "estimate": "PT0S", "externalId": "32596", "fixedVersions": ["PDOC 0.99.0"], "id": "32596", "issueType": "Improvement", "key": "PDOC-82", "labels": [], "originalEstimate": "PT0S", "parent": "32434", "parentSummary": "Initial increment for puppet strings and docs workflow", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-10-07T14:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Ensure the strings gem can be managed via bundler in docs scripts", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Good news, this has been fixed! :D\n\n{code}\n# @param first The first parameter for this class...\n\noutput:\n...\n          {\n            \"tag_name\": \"param\",\n            \"text\": \"The first parameter for this class\",\n            \"types\": [\n              \"String\"\n            ],\n            \"name\": \"first\"\n          },\n...\n{code}", "created": "2016-11-03T13:39:00.000000"}], "components": [], "created": "2016-06-27T18:28:00.000000", "creator": "557058:30b5c31c-aff1-4b34-8c3e-742c2327385d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a0cbd87"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz787z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_34417267_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_11093855136"}], "description": "When generating the JSON format, it should include the @param help text\n\nFrom the example README on Classes / Defined Types:\n{code}\n# @param first_arg The first parameter for this class\n{code}\n\nThe \"The first parameter for this class\" text should be in the JSON format output.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32432", "fixedVersions": [], "id": "32432", "issueType": "Improvement", "key": "PDOC-81", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:30b5c31c-aff1-4b34-8c3e-742c2327385d", "resolution": "Fixed", "resolutionDate": "2016-11-03T13:40:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "@param tag help text should be in JSON", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "It is probably a transient dependency as I believe that puppet-strings dependency is on puppet. ", "created": "2016-06-22T06:54:00.000000"}, {"author": "557058:ad2090d1-8a61-4530-9228-7d89570c23b7", "body": "Maybe this can be worked around by using the puppet-agent vendored \"gem\" command to install puppet-strings? Then it should see the existing puppet/facter gems and consider that dependency satisfied already.", "created": "2016-09-21T17:55:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Can we solve this with documentation how to install for PE 3.8 or are the \"out of the box\" work around consequences still so bad that we should avoid doing this, and instead make strings state it is for later PE versions only?", "created": "2016-09-27T14:45:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "I'm hoping we can document an out of the box workaround, but I haven't been able to get strings to function without overwriting PE binaries in {{/usr/local/bin}}.\n\nWhen doing:\n{noformat}\npuppet apply -e \"package {'puppet-strings': provider => gem, install_options => ['--ignore-dependencies']}\"\n{noformat}\n\nthe strings gem is installed without conflicts, but PE puppet can't find the face: {{Error: Unknown Puppet subcommand 'strings'}}. I'm not sure how to work around this.", "created": "2016-09-27T15:39:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Probably does not work because it needs to do what the puppet_gem provider does? Could a user do that manually?", "created": "2016-09-27T16:19:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "{{puppet_gem}} just uses the {{gem}} we ship with puppet agent, in {{/opt/puppetlabs/puppet/bin/gem}} (It uses our vendored ruby) - so we can't replicate that. Installing the strings gem into the PE gemdir {{/opt/puppet/lib/ruby/gems/1.9.1/gems/gems}} results in: \n\n{code}\nroot@cah6tsusw5gkv8b puppet-enterprise-3.8.6-21-g998fda5-el-7-x86_64]# puppet strings\n/opt/puppet/lib/ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Unable to find application 'strings'. Could not find puppet (>= 3.7.0) amongst <list of gems>\n{code}", "created": "2016-09-27T16:44:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "We ended up deciding that we can just remove the runtime dependency on puppet, as the gem is not capable of determining when puppet / facter is installed by a means other than the rubygem. Instead, we're going to add a {{requirement}} to the gemspec which will show up on rubygems.org. With this change, the work around for PE 3.8 isn't too bad, and just involves installing the gems into the PE GEM_HOME.\n\nPR: https://github.com/puppetlabs/puppet-strings/pull/103", "created": "2016-09-28T12:48:00.000000"}], "components": ["CLI"], "created": "2016-06-20T17:11:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:4e77c969-1230-455c-9a24-a8b5a750f156", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@31c4f340"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-97"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz73av:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_11717367_*|*_1_*:*_1_*:*_135839260_*|*_10007_*:*_1_*:*_717184_*|*_5_*:*_1_*:*_1026368887_*|*_6_*:*_1_*:*_0_*|*_10004_*:*_1_*:*_88073108_*|*_10005_*:*_1_*:*_8400195597"}], "description": "> sudo puppet resource package puppet-strings provider=gem\nError: Execution of '/usr/bin/gem install --no-rdoc --no-ri puppet-strings' returned 1: ERROR:  Error installing puppet-strings:\n        \"facter\" from facter conflicts with /usr/local/bin/facter\nError: /Package[puppet-strings]/ensure: change from absent to present failed: Execution of '/usr/bin/gem install --no-rdoc --no-ri puppet-strings' returned 1: ERROR:  Error installing puppet-strings:\n        \"facter\" from facter conflicts with /usr/local/bin/facter\npackage { 'puppet-strings':\n  ensure => 'absent',\n}\n> sudo gem install puppet-strings\nfacter's executable \"facter\" conflicts with /usr/local/bin/facter\nOverwrite the executable? [yN]  n\nERROR:  Error installing puppet-strings:\n        \"facter\" from facter conflicts with /usr/local/bin/facter\n\nThis appears to be a problem -- we have change controls, so if this gem upgrades our Facter version, we have to do a lot of paperwork and plan in the FSC. Is this really necessary?", "environment": "RHEL 7.0, PE 3.8.3", "epicLinkSummary": "Initial increment for puppet strings and docs workflow", "estimate": "PT0S", "externalId": "32384", "fixedVersions": ["PDOC 0.99.0"], "id": "32384", "issueType": "Bug", "key": "PDOC-80", "labels": [], "originalEstimate": "PT0S", "parent": "32434", "parentSummary": "Initial increment for puppet strings and docs workflow", "priority": "Major", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:4e77c969-1230-455c-9a24-a8b5a750f156", "resolution": "Fixed", "resolutionDate": "2016-09-28T16:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Installation overwrites facter in PE 3.8.3", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623cffe88d8b9c0068b93ebf", "created": "2016-06-20T14:29:00.000000", "name": "Screen Shot 2016-06-20 at 1.23.06 PM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12386"}, {"attacher": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "created": "2016-06-01T14:20:00.000000", "name": "Screenshot 2016-06-01 13.19.31.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12374"}, {"attacher": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "created": "2016-06-01T14:20:00.000000", "name": "puppet-strings-functions-4.5.0.tar.gz", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12370"}], "comments": [{"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "I ran strings against the {{lib/puppet/functions/}} directory and got a spray of errors.\n\nIt did produce docs but they are garbled and not many strings are rendered, see attached screenshot.\n\nI've included a tar.gz of the generated directory in case that helps anyone.", "created": "2016-06-01T14:20:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "So for what it's worth the screenshot provided isn't quite an accurate representation of what the strings output will look like for our functions. I ran strings only against the \"new\" function (specifically the 3.x stub in `lib/puppet/parser/functions` since it contains the actual documentation string) where I set the \"--markup markdown\" option in the .yardopts file and it looks much better (see attached screenshot).\n\nThe issue here is that YARD by default will assume it's parsing rdoc (which is why the previous screenshot looks so unreadable), when we want it to parse our comments and Markdown. This is usually dealt with by adding a .yardopts file in the root of the module directory which specifies the Markdown option. I'm not quite sure how we want to deal with this in regards to running against core puppet since we don't want to be dropping .yardopts files everywhere. We will probably have to figure out another way to pass this setting to YARD. This can't be done via the command line because since strings is a face, all arguments are parsed as puppet arguments.", "created": "2016-06-20T14:29:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I seriously doubt that any of the entities being documented by puppet-strings will encounter deliberate rdoc markup that is not also working with markdown. Can we enforce markdown in puppet-string? Ideally allowing it to be modified by a user that opts in to having .yardopts in their module.", "created": "2016-06-22T07:13:00.000000"}], "components": [], "created": "2016-05-18T14:28:00.000000", "creator": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6beb02f8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz7sov:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Jun/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_164956_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_7257019081"}], "description": "One possibility: concentrate on using strings to fill in existing gaps:\n* 4.x Functions are not processed (the pressing need since we otherwise have to maintain dummy copies in a different format)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32383", "fixedVersions": [], "id": "32383", "issueType": "Task", "key": "PDOC-79", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "resolution": "Fixed", "resolutionDate": "2016-08-10T14:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "[SPIKE] Define the set of tickets needed to get strings working for docs needs", "timeSpent": "PT0S", "updated": "2016-08-18T02:04:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-05-05T02:37:00.000000", "creator": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f2eeade"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz6407:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_531358_*|*_10007_*:*_1_*:*_4016827227_*|*_5_*:*_1_*:*_9672397213_*|*_6_*:*_1_*:*_0"}], "description": "The puppet-strings rubygem should contain the full LICENSE text to accompany the source code that's licensed this way, but currently only contains the source files under lib/ themselves.\n\nIt'd be useful to also include the README.md and other documentation, plus the specs as they can be used in OS packaging (e.g. Fedora).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32595", "fixedVersions": ["PDOC 0.99.0"], "id": "32595", "issueType": "Improvement", "key": "PDOC-78", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "70121:d6aac370-4601-44fc-bc1f-2a379fd45fd4", "resolution": "Fixed", "resolutionDate": "2016-06-20T14:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Include LICENSE, documentation and tests in gem", "timeSpent": "PT0S", "updated": "2016-10-10T13:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "body": "https://github.com/puppetlabs/puppetlabs-strings/pull/86", "created": "2016-05-04T01:45:00.000000"}, {"author": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "body": "The pull request has been merged, maybe set this to ready so we can cook a new release", "created": "2016-07-04T00:03:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "It is in \"Ready for CI\" which is past \"Ready for Merge\". Someone needs to look at the acceptance test results to move it to the next state: \"Ready for Test\".", "created": "2016-07-05T03:40:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "I believe [~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c]'s rewrite addresses this. Once we get that merged in I'll verify it works and we can close this out.", "created": "2016-09-14T14:55:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "With the new {{generate}} task, you should be able to do this:\n\n{code}\nrake strings:generate\\['site/**/*.pp modules/custom/**/*.{rb\\,pp}']\n{code}\n\nThat would filter to only parse Puppet source under {{site/}}, and Ruby and Puppet source under {{modules/custom/}}.  No need to write a custom task or any Ruby code.", "created": "2016-09-14T15:07:00.000000"}, {"author": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "body": "I'm not convinced that this is the best approach. Although the extra options defined in https://github.com/puppetlabs/puppetlabs-strings/pull/98/files#diff-04c6e90faac2675aa89e2176d2eec7d8R228 might prove useful, I prefer setting these inside my Rakefile and having configuration settings for each makes it a lot more clear than depending on the order in which an option is provided.", "created": "2016-09-15T00:54:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "The {{strings:generate}} task is itself a simple wrapper of {{PuppetStrings.generate}} (https://github.com/peterhuene/puppet-strings/blob/678c04957d59b297085e2bc6a422801a174a94a7/lib/puppet-strings/tasks/generate.rb), so my recommendation would be to write one's own rake task that passes the desired arguments into {{PuppetStrings.generate}}.\n\nIf that is insufficient, we could add the proposed wrapper here, but I do feel that {{generate}} is already a simple enough API to wrap with one's own rake task if desired.", "created": "2016-09-15T11:25:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "We came to a consensus that Peter's suggestion above is the best way to proceed. The {{generate}} task should be flexible enough to allow any amount of customization via a custom rake task wrapper, if desired. Closing this ticket now, but if anyone has strong objections feel free to leave another comment.", "created": "2016-11-02T15:45:00.000000"}], "components": [], "created": "2016-05-04T01:35:00.000000", "creator": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Acceptance Criteria", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "That it is possible to generate a rake task for running strings that is based on user input.\n"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@47036c04"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-100"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8r9r:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "New Feature"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "The task `strings:generate` which is provided by including `puppet-strings/rake_tasks` will scan the manifests and lib directory from your single module. If you need to document a complete, or part of a, puppet tree, you can use the `PuppetStrings::RakeTasks::Generate` task. This rake task will by default overwrite strings:generate unless you specify a custom name. See the example in the puppet strings readme and the rake task itself for more information."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Jul/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_7953938673_*|*_1_*:*_1_*:*_3585954417_*|*_10007_*:*_1_*:*_1985776713_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_2250165508"}], "description": "We will be using puppet strings to document all our modules/classes that we have available in our puppet tree. Currently, this is impossible without hacking a custom rake task to do this.\n\nI would love to be able to do something like:\n\n{noformat}\nPuppetStrings::RakeTasks::Generate.new do |task|\n  task.paths = ['site', 'modules/custom']\n  task.excludes = ['/vendor/']\n  task.options = {}\nend\n{noformat}", "epicLinkSummary": "Strings 1.0 release", "estimate": "PT0S", "externalId": "32579", "fixedVersions": ["PDOC 1.0.0"], "id": "32579", "issueType": "New Feature", "key": "PDOC-77", "labels": [], "originalEstimate": "PT0S", "parent": "32600", "parentSummary": "Strings 1.0 release", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "resolution": "Won't Fix", "resolutionDate": "2016-11-02T15:46:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Create an easy way to modify the rake task to include/exclude certain files/folders.", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79], I marked this as \"Ready for Review\" just because it's ready for you to look at. Made more sense than In Progress. Anyway, feel free to close when you're done I think.", "created": "2018-01-11T15:34:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Added to strings style guide draft", "created": "2018-01-11T17:45:00.000000"}], "components": [], "created": "2016-04-14T15:18:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@684c54e2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-218"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyl88v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Jan/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_55041266908_*|*_10009_*:*_1_*:*_7930926_*|*_5_*:*_1_*:*_0"}], "description": "You can use tags like {{@return}} and {{@example}} to document your classes, functions, types, etc., but as a user, I'm not sure exactly what's available or what I SHOULD be using. It'd be nice to have a list!\n\nFor example: I went looking to see whether there's a way to override the default value for a parameter in a native Ruby resource type (like in cases where the default isn't cleanly introspectable). I can't tell! (If there's not, that'll be another ticket. :) )\n\n*UPDATE*: this ticket already exists! A user recently found that not _all_ of the YARD tags can be used. This information should all go into the style guide.\n\n*This is a list of the built-in YARD tags that are also picked up by puppet-strings. This is NOT a list of all puppet-strings tags.*\nYARD reference: http://www.rubydoc.info/gems/yard/0.6.4/file/docs/Tags.md#List_of_Available_Tags\n\nh3. @example\nShow an example snippet of code for an object. The first line is an optional title. Use for specific examples of a given component. One example tag per example.\nh3. @param\ndefines a parameter for the given component. remember, if Puppet 4 types are present in the source, they will override whatever is in the docs.\nh3. @raise\ncan be used to document any exceptions that may be raised by the given component\n{{# @raise PuppetError this error will be raised if x}}\nh3. @author\nAuthor of the component\nh3. @see\nused to document additional references. comes out in the generated docs as a \"See Also\" section. one tag per reference (website, other method, etc)\nh3. @since\nused to document how long the component has been available.\n{{# @since version 1.1.1}}\nh3. @version\nanother way to talk about which version the component is in or how long it's been available.\nh3. @option\n* only displays if there's actually an options hash being passed to the method\n* should be used in conjunction with a @param tag\ne.g.\n{code}\n# @param [Hash] opts \n#  List of options\n# @option opts [String] :option1 \n#  option 1 in the hash\n# @option opts [Array] :option2\n#  option 2 in the hash\n{code}\n", "epicLinkSummary": "Puppet Strings 1.2.0", "estimate": "PT0S", "externalId": "32367", "fixedVersions": [], "id": "32367", "issueType": "Improvement", "key": "PDOC-76", "labels": [], "originalEstimate": "PT0S", "parent": "32468", "parentSummary": "Puppet Strings 1.2.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2018-01-11T17:45:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Document the available YARD @tags for ruby/pp doc objects", "timeSpent": "PT0S", "updated": "2018-02-27T14:21:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "merged to master: a3227b8", "created": "2016-03-24T17:32:00.000000"}], "components": [], "created": "2016-03-24T15:08:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6326ea00"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz5b7z:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_538373103_*|*_1_*:*_1_*:*_2674624_*|*_10007_*:*_1_*:*_6026458_*|*_6_*:*_1_*:*_0"}], "description": "Puppet strings uses an API private method in puppet which has been updated to take two parameters instead of one. This means strings is calling it with the wrong number of variables in the host class handler which is causing it to crash:\n\nhttps://github.com/puppetlabs/puppetlabs-strings/blob/master/lib/puppet_x/puppetlabs/strings/yard/handlers/host_class_handler.rb#L19\n\nThis ticket is for fixing the issue in strings. For details around the fact that strings is using API private puppet methods, see PUP-6088", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32366", "fixedVersions": ["PDOC 0.4.0"], "id": "32366", "issueType": "Bug", "key": "PDOC-75", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-03-30T23:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings calls 'interpret_any' with the wrong number of arguments", "timeSpent": "PT0S", "updated": "2016-03-30T23:06:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2016-03-11T16:15:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3fa8f90e"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz519b:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_476124785_*|*_1_*:*_1_*:*_428676168_*|*_10007_*:*_1_*:*_757935207_*|*_10009_*:*_1_*:*_9943_*|*_6_*:*_1_*:*_0"}], "description": "Since there's pretty much unanimous agreement that strings is a tool better delivered via gem rather than a puppet module, the 0.4.0 will be the first and final release to feature both a gem and a module. The module will need to be updated to explain that it is deprecated and all further updates will come via the gem. \n\nThat means we need to make a few changes for the module release to communicate that it's being deprecated:\n\n# Update the README to explain that the module is deprecated\n# Add a guide for gem installation in the README \n# Go through the Puppet Labs gem checklist\n# Update metadata and gemspec\n# Add CHANGELOG", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32431", "fixedVersions": ["PDOC 0.4.0"], "id": "32431", "issueType": "Task", "key": "PDOC-74", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-03-30T23:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Deprecate strings module in favor of gem", "timeSpent": "PT0S", "updated": "2016-03-30T23:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Edit: nevermind, we still need to do this post-Peter's rewrite. Some words from Peter:\n\nThat shouldn't be difficult at all", "created": "2016-09-14T15:03:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "Wishlist: Make it so that used type aliases (e.g. as a class param's type) are linked to the aliases' documentation.", "created": "2016-10-09T14:14:00.000000"}], "components": [], "created": "2016-03-10T13:24:00.000000", "creator": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fc27e75"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt33:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Sep/16"}], "description": "In PUP-5903 the ability to define local type aliases inside a 4.x function was added. These types may need to be processed when producing documentation.\n\nIt may also be just perfectly fine to display only the aliases, but users may want to see the type definitions.\n\nThe first step is to ensure that the addition of type aliases does not trip up the extraction process. Second step is to possibly add a section that shows the type aliases.\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32364", "fixedVersions": ["PDOC 0.3.0"], "id": "32364", "issueType": "Bug", "key": "PDOC-73", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "handle type aliases in 4.x ruby functions (introduced in PUP-5903)", "timeSpent": "PT0S", "updated": "2019-08-06T17:48:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I'm not sure when it was fixed, but this does not appear to be occurring any longer.", "created": "2016-03-14T18:18:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "We had issues with \"puppet_x\" in its many shapes IIRC, (PuppetX, puppet_x, puppetx, etc) and at one point there were errors in that handling. There has also been problems with running on puppet server and finding things in the \"PuppetX\" name space.\n\nWas this perhaps solved by using a gem as opposed to a module?", "created": "2016-03-15T10:30:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "No, it was blowing up in both cases previously. I'm not exactly sure what changed as I tried using a clean environment but it no longer seems to fail.", "created": "2016-03-15T12:54:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "It sounds like this isn't a problem anymore, so I'm closing this out. Feel free to reopen this ticket if the issue resurfaces!", "created": "2016-09-28T16:33:00.000000"}], "components": ["DOCS"], "created": "2016-02-24T04:10:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@45f3a6cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz8r9j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_18789792663_*|*_6_*:*_1_*:*_0"}], "description": "When running _*PuppetX::PuppetLabs::Strings::Util.generate*_ the following exception is raised:\n\n{noformat}\nLoadError: cannot load such file -- puppet_x/puppetlabs/strings/yard/tags/directives\n{noformat}\n\nThis does not occur with Puppet 3.8.5.\n", "environment": "* Ruby 2.1.8\n* Puppet-Strings 0.3.1\n* YARD 0.8.7.6\n* Puppet 4.3.2", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32518", "fixedVersions": ["PDOC 0.1.0"], "id": "32518", "issueType": "Bug", "key": "PDOC-72", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Cannot Reproduce", "resolutionDate": "2016-09-28T16:33:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet 4.3.2 cannot find strings/yard/tags/directives with Strings 0.3.1", "timeSpent": "PT0S", "updated": "2016-10-06T14:14:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I saw some noise around the Gem so thought that I'd give it another shot.\n\nThis issue is still occurring in Puppet 3.8 and 4.3.", "created": "2016-03-14T18:19:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Thanks for trying it out [~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9], it is not a new version though, so same problems would still be there. We are aware puppet strings needs some TLC...", "created": "2016-03-15T09:31:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Noting for myself and others: to reproduce this bug using the steps described in the ticket on a CentOS 7 virtual machine, makes sure you install rpm-build and rpm-devel.", "created": "2016-06-28T15:16:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "So unfortunately I had to time box my work on the issue and after some poking around in the debugger I still haven't been able to get to the root of it. I figured I'd leave some notes on where I was planning on going next for my future self or whoever picks up this ticket. I think this is going to be kind of a hairy issue to track down judging by the fact that it only happens at a particular scale and that this file evaluated on its own is fine. \n\nI think, as the ticket description suggests, that it's a fair assumption something is being corrupted somewhere. That being said, comparing our code object in the good case and the code object in the bad case may be the key to tracking things down. Since the exception is occurring in the HostClassHandler the object in question is [this one|https://github.com/puppetlabs/puppetlabs-strings/blob/master/lib/puppet_x/puppetlabs/strings/yard/handlers/host_class_handler.rb#L32]. I think either inspecting this object with the debugger or printing it in both scenarios (a. running it in the batch when it fails and b. running it on it's own when it passes) and seeing what is different should point to where the corruption is potentially happening.", "created": "2016-06-30T11:05:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "A work around for this problem has been merged to master at: 138dc25\nIt catches the spurious errors and keeps the process going after having logged that the issue occurred. This is no replacement for real fixes, but allows as much documentation as can be generated to be produced.", "created": "2016-07-18T05:16:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] we're going to be releasing strings 0.99.0 (a complete rewrite) on Monday, and we're pretty confident that this won't be an issue in the new code. Definitely let us know if it pops up again, though.", "created": "2016-10-07T14:38:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:62450221ad6b7e006aa4e34c] Awesome! It's really great to hear that there has been some love here. Looking forward to trying the new version.", "created": "2016-10-07T15:03:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:e0340dee-9d48-48c3-8c6a-02597af847c9] oh yes, definitely! We've got a new team with strings as a central part of its charter now. We have big plans! :) Please do try it out and let us know if/when you find any issues - we'll be doing the big 1.0.0 soon, after fixing anything found in this one.", "created": "2016-10-07T15:07:00.000000"}], "components": ["DOCS"], "created": "2016-02-24T04:04:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@783bc47f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4pb3:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_19560801509_*|*_10009_*:*_1_*:*_4315_*|*_5_*:*_1_*:*_254530552_*|*_6_*:*_1_*:*_0"}], "description": "Running 'puppet strings' or using the Gem on a large body of modules results in spurious errors and eventually a Stack Level Too Deep exception.\n\nThe following can be used to reproduce the error:\n\n{code:bash}\n#!/bin/sh\ngit clone https://github.com/simp/simp-core puppetdoc_test\ncd puppetdoc_test\ngit checkout 5.1.X\nbundle\nrake deps:checkout\ncd src/doc\ngit remote add doctest https://github.com/trevor-vaughan/simp-doc\ngit fetch --all\ngit checkout autodoc\nbundle\nrake docs:auto\n{code}\n\nRunning `puppet strings` on files that the large run claim are failing indicate no failures and provides correct output. This hints at some level of in memory object corruption but I have been unable to pinpoint the source.\n\nExample of failing output:\n\n{noformat}\n[error]: Unhandled exception in PuppetX::PuppetLabs::Strings::YARD::Handlers::HostClassHandler:\n[error]:   in `../../src/puppet/modules/mysql/manifests/server/service.pp`:2:\n\nclass mysql::server::service {\n\n  if $mysql::server::real_service_enabled {\n    $service_ensure = 'running'\n  } else {\n    $service_ensure = 'stopped'\n  }\n\n  if $mysql::server::real_service_manage {\n    file { $mysql::params::log_error:\n      owner => 'mysql',\n      group => 'mysql',\n    }\n    service { 'mysqld':\n      ensure   => $service_ensure,\n      name     => $mysql::server::service_name,\n      enable   => $mysql::server::real_service_enabled,\n      provider => $mysql::server::service_provider,\n    }\n  }\n\n}\n\n[error]: ParseErrorWithIssue: Syntax error at '{' at line 14:16\n[error]: Stack trace:\n        /home/trevor-vaughan/.rvm/gems/ruby-2.1.8/gems/puppet-3.8.5/lib/puppet/pops/parser/parser_support.rb:122:in `on_error'\n        /home/trevor-vaughan/.rvm/gems/ruby-2.1.8/gems/puppet-3.8.5/lib/puppet/pops/parser/lexer2.rb:291:in `scan'\n        /home/trevor-vaughan/.rvm/rubies/ruby-2.1.8/lib/ruby/2.1.0/racc/parser.rb:319:in `_racc_yyparse_c'\n        /home/trevor-vaughan/.rvm/rubies/ruby-2.1.8/lib/ruby/2.1.0/racc/parser.rb:319:in `yyparse'\n        /home/trevor-vaughan/.rvm/gems/ruby-2.1.8/gems/puppet-3.8.5/lib/puppet/pops/parser/parser_support.rb:230:in `_parse'\n        /home/trevor-vaughan/.rvm/gems/ruby-2.1.8/gems/puppet-3.8.5/lib/puppet/pops/parser/parser_support.rb:129:in `parse_string'\n\n\u230f Parsing ../../src/puppet/modules/postgresql/lib/puppet/parser/functions/postgresql_acls_to_resources_has\u230e Parsing ../../src/puppet/modules/puppetdb/lib/puppet/parser/functions/puppetdb_create_subsetting_resourcrake aborted!\nSystemStackError: stack level too deep\n{noformat}", "environment": "* A large body of modules.\n* Ruby 1.9.3-p551 and Ruby 2.1.8\n* Puppet 3.8.5\n* Puppet Strings 0.3.1\n* YARD 0.8.7.6", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32560", "fixedVersions": ["PDOC 0.99.0"], "id": "32560", "issueType": "Bug", "key": "PDOC-71", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Fixed", "resolutionDate": "2016-10-07T14:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Stack Level Too Deep Exception and Spurious Errors", "timeSpent": "PT0S", "updated": "2016-10-10T13:19:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Whew, sorry it took so long but I finally got to test this! It works exactly as planned, and it seems to be like a sane default, especially since rake tasks aren't exactly the \"default\" way to use strings. Plus we haven't done a release with them yet (so this shouldn't break existing behavior for anyone).\n\nWondering though if we want to document the fact that it will create a json file in the root directory, maybe in the [section of the README about rake tasks|https://github.com/puppetlabs/puppetlabs-strings/blob/master/README.md#rake-tasks]? \n\nThoughts [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] [~accountid:557058:b62c47a4-37e4-460d-8791-518bdfebf3e8]?", "created": "2016-03-15T16:54:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The fact it generates json should be documented, what / where it writes data, and if there are options that control that. Seems worth mentioning under the rake section as that is where you would go to understand how to run things. The fact that it outputs Json (always or optionally) deserves a paragraph or so of text to explain what it is intended for and maybe a reference to a schema etc.", "created": "2016-03-15T17:19:00.000000"}], "components": [], "created": "2016-02-21T10:12:00.000000", "creator": "557058:b62c47a4-37e4-460d-8791-518bdfebf3e8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@952bfbd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4nef:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Mar/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_476056154_*|*_1_*:*_1_*:*_8501199_*|*_10007_*:*_1_*:*_2841514006_*|*_6_*:*_1_*:*_0"}], "description": "At the moment it's not possible to generate the JSON output using the rake tasks, without knowing the internals and writing your own rake task.\n\nGiven how useful that output can be, I think it's a reasonable default to always generate it. I've opened https://github.com/puppetlabs/puppetlabs-strings/pull/72/files with that change.\n\nMy rationale for that is by always generating it more people will find out about it, and potentially use it to do awesome. A user that really doesn't want that can always add it to .gitignore or similar, or write there own rake task.\n\nThis could be made configurable later, or split into separate tasks. I'm less bothered about the implementation and more interested in the default. Outputting by default could lead to more visibility/usage of the format, which can only be a good thing.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32464", "fixedVersions": ["PDOC 0.4.0"], "id": "32464", "issueType": "Improvement", "key": "PDOC-70", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:b62c47a4-37e4-460d-8791-518bdfebf3e8", "resolution": "Fixed", "resolutionDate": "2016-03-30T23:07:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Always generate JSON output for Rake task", "timeSpent": "PT0S", "updated": "2016-03-30T23:07:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "yep! PDOC-226", "created": "2018-03-05T12:11:00.000000"}], "components": [], "created": "2016-02-06T06:56:00.000000", "creator": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1fbc1154"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4b9z:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_65510086239_*|*_6_*:*_1_*:*_0"}], "description": "A new syntax for handling type definitions is added by the parser in PUP-5742 which means that a definition is created. This should be included in the documentation.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32516", "fixedVersions": [], "id": "32516", "issueType": "New Feature", "key": "PDOC-69", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:c7e2df03-377d-4bf0-9407-106b8483430d", "resolution": "Duplicate", "resolutionDate": "2018-03-05T12:11:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Handle new definitions of Puppet Types.", "timeSpent": "PT0S", "updated": "2018-03-05T12:11:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Can you clarify what you mean by \"some options are not documented\" - do you mean {{@tags}} that are unsupported, or that there are things that should have been documented, but are missing? Also, what do you mean by \"documentation functions not being preset in the code\", what are those \"functions\"? and in which \"code\"?\n\nI sort of understand what you are asking for in general, but it would help you could be more specific - do you have some examples where you would expect to see the kinds of errors your thinking of?", "created": "2016-02-04T05:54:00.000000"}, {"author": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "body": "I have updated the description and added examples", "created": "2016-02-04T06:02:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Agree that it would be a nice option to have. I am afraid features like this have low priority atm so it may take a while.", "created": "2016-02-04T09:02:00.000000"}], "components": [], "created": "2016-02-03T08:23:00.000000", "creator": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@62b44b8c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt2v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Feb/16"}], "description": "I thnk it would be useful if the rake jobs would get an option to fail is some parameters are not documented or if some documented parameters are not present anymore in the code.\n\nThat would help ensuring in pull requests that the documentation stays complete and as relevant as possible.\n\nExamples that would fail:\n\nh3. failure because of non-documented parameter\n{code:puppet}\n# This class is an example\n#\n# @param foo This parameter is documented\nclass mymodule (\n  $foo,\n  $bar,\n){\n}\n{code}\n\nh3. failure because of irrelevant documentation\n{code:puppet}\n# This class is an example\n#\n# @param foo This parameter is documented\n# @param bar This parameter is documented but does not exist anymore\nclass mymodule (\n  $foo,\n){\n}\n{code}\n\n\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32511", "fixedVersions": [], "id": "32511", "issueType": "Bug", "key": "PDOC-68", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should be able to fail instead of warn", "timeSpent": "PT0S", "updated": "2019-08-06T17:48:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Hmm, I didn't realize Strings didn't support this. The reason we want ~~~ instead of ``` is for consistency throughout the docs. It's going to prevent problems if and when Forge or module docs (or perhaps just chunks from those docs) move into the main docs page.  It would be really lovely if Strings could handle that.", "created": "2015-12-16T17:21:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Good news everyone! We no longer need to explicitly prefer ~~~ to ``` in our docs, as some significant improvements have been made. Obviously, at this point, there are quite a few modules that use ~~~ , so I don't know that this issue just goes away immediately. We may still want Strings to support ~~~, though my sense is that the community generally prefers ```.", "created": "2016-01-20T09:58:00.000000"}, {"author": "557058:b62c47a4-37e4-460d-8791-518bdfebf3e8", "body": "Woot. [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] are you going to change the guidance?\n\nMy experience is that the community (and the wider GitHub community) definitely tend to use ```. It's worth bringing up with the wider modules team (Former user for reference) about whether to do in passing or in one go. Using strings for modules and dog fooding it would make a ton of sense.", "created": "2016-01-20T10:02:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Indeed I am [~accountid:5c6157fbdb49e4016460f4a3]. \n\n{quote}\nIt's worth bringing up with the wider modules team about whether to do in passing or in one go.\"\n{quote}\n\n\"... to do\" what? Sorry, not sure what you mean here. If you mean changing the ~~~ back to ```, I'm not sure I see any reason to shift that. As far as I know, they aren't a problem in any way, so my inclination would be to leave them be, and in the interest of consistency, we can change them as we touch READMEs.", "created": "2016-01-20T14:05:00.000000"}, {"author": "557058:b62c47a4-37e4-460d-8791-518bdfebf3e8", "body": "Specifically changing the READMEs as part of starting to use Puppet Strings to publish documentation for some of the supported modules. \n\nI think until Puppet Labs start using Strings it's hard to get other people in the community to adopt it.", "created": "2016-01-21T02:40:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Ah, I see. Oh, yeah, I think that's a ways off yet.", "created": "2016-01-21T11:29:00.000000"}, {"author": "557058:68216498-c6bf-4e8f-92c1-ac84887b7c02", "body": "{{find | xargs sed -i -e 's/^~~~$/```/'}} is easy, and can be scripted across all modules. I can pull the trigger on the next modulesync run (which is coming up RSN).  [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79], do I get green lights from you?", "created": "2016-10-09T14:18:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "A question here is if Strings allows the syntax to follow the ``` ? for example {{``` puppet}}", "created": "2016-10-10T08:26:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "I don't know why I didn't get/see [~accountid:557058:68216498-c6bf-4e8f-92c1-ac84887b7c02]'s previous ping on this ticket", "created": "2017-04-25T11:23:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] thanks - sounds good.\n\nDoes it work to use ```puppet or ```ruby etc to tell the renderer about language/syntax coloring  ?", "created": "2017-04-27T12:30:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "It does, [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd]! Language highlighting was added last year, and I love it a lot.", "created": "2017-04-27T14:31:00.000000"}], "components": [], "created": "2015-12-16T03:14:00.000000", "creator": "557058:b62c47a4-37e4-460d-8791-518bdfebf3e8", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4464411"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtof:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_70016183966_*|*_5_*:*_1_*:*_0"}], "description": "From speaking with [~accountid:557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79] and others in docs, they recommend using {{~~~}} as the delimiter in README's for code, rather than the more common (in my experience) {{```}}.\n\nHere's an email from the apache module: https://raw.githubusercontent.com/puppetlabs/puppetlabs-apache/master/README.md\n\nHowever strings 0.3.1 doesn't render this as code, specifically it will just pass it through unrendered like so:\n\n{code}\n~~~ kubectl config view \u2013raw=true ~~~\n{code}\n\nThis limits the use of strings for all internal modules at the moment.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32462", "fixedVersions": [], "id": "32462", "issueType": "Bug", "key": "PDOC-67", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:b62c47a4-37e4-460d-8791-518bdfebf3e8", "resolution": "Fixed", "resolutionDate": "2018-03-05T12:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Issue with markdown rendering of code using ~~~", "timeSpent": "PT0S", "updated": "2018-03-05T12:10:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "Yikes, I forgot puppet describe even existed. \n\nContext for other readers: \"puppet describe\" is an alternate interface to the old embedded docs code that currently generates the core [resource type reference|http://docs.puppetlabs.com/references/latest/type.html#exec-providers] for the docs website. On the docs site, we do print info about the providers, as well as a bunch of other info that \"puppet describe\" can't do. ", "created": "2015-12-03T12:03:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "I'm of the opinion that any work on puppet describe is wasted effort that we should be spending on Puppet Strings instead. The old embedded docs code is rotting, and if we can get Strings ready for prime-time, we'll win big all over the place. This sounds like a feature request for Strings: it should have a minimal interface for reading docs on the CLI, and should be able to filter down to arbitrary details if needed (so you don't need to scroll a mile back up to find what you were looking for. ", "created": "2015-12-03T12:06:00.000000"}, {"author": "623a46a94a57610068e6760c", "body": "It would be useful to know what Puppet Strings are and perhaps a link to it. I would love to see closer correlations between the web based docs and the CLI. Being able to read docs on the CLI means I can:\n* Work in a very limited environment\n* Don't have to context switch \n* Get to docs much more quickly\n* Don't need the internet ( there is still places like that )\n\nThe last time I taught Puppet Fundamentals, the course material still contained references to puppet describe and various other command line based documentation. I should probably have made this ticket more generic since puppet describe seems to be out of date for almost all build in resource types.", "created": "2015-12-06T07:19:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:557058:8b8ee68d-9213-4499-8e76-36a21cb10c37] https://github.com/puppetlabs/puppetlabs-strings\n\nRight now it has rudamentary support for resource types and providers, but it hasn't been expanded and hardened to make sure it works with the core built-in resource types. ", "created": "2015-12-11T12:10:00.000000"}], "components": ["DOCS"], "created": "2015-12-03T03:23:00.000000", "creator": "623a46a94a57610068e6760c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@138cdd24"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "623e796e8d8b9c0068b9f467"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz3eev:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Dec/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_71138806327_*|*_6_*:*_1_*:*_0"}], "description": "When running {{puppet describe exec}} it does not contain information about the providers other than listing them. It would be useful to know and understand the behaviour and assumptions with the various providers. Currently if you want to do that you have to read the actual implementation code. \n\npuppet --version\n3.4.3", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32422", "fixedVersions": [], "id": "32422", "issueType": "Improvement", "key": "PDOC-169", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a46a94a57610068e6760c", "resolution": "Won't Do", "resolutionDate": "2018-03-05T12:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings should produce documentation for providers", "timeSpent": "PT0S", "updated": "2018-05-18T16:49:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "We don't do this currently. A nice-to-have.", "created": "2018-03-05T11:58:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "This would be a nice enhancement to the generated types documentation, but [~accountid:557058:0b2a0f29-3749-4fc3-9772-13ad025585de]'s comment is still correct: nice to have, not a blocker or top priority.", "created": "2019-08-12T15:27:00.000000"}], "components": [], "created": "2015-10-28T06:45:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2b00a0f8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2thr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}], "description": "Puppet's subscribe/notify/~> features allow a changed resource to send a \"refresh event\" to another resource. Each type gets to choose whether and how to respond to a refresh, and only a few of them actually do anything.\n\nWe should detect resource types that support refreshing, and document what their refresh behavior is. \n\nThis is easier than it sounds, because all refreshable types do something like this:\n\nexec: \n\n{code}\n    # Run the command, or optionally run a separately-specified command.\n    def refresh\n      if self.check_all_attributes(true)\n        if cmd = self[:refresh]\n          provider.run(cmd)\n        else\n          self.property(:returns).sync\n        end\n      end\n    end\n{code}\n\nservice: \n\n{code}\n    # Basically just a synonym for restarting.  Used to respond\n    # to events.\n    def refresh\n      # Only restart if we're actually running\n      if (@parameters[:ensure] || newattr(:ensure)).retrieve == :running\n        provider.restart\n      else\n        debug \"Skipping restart; service is not running\"\n      end\n    end\n{code}\n\npackage: \n\n{code}\n    # When a refresh event is triggered, calls reinstall on providers\n    # that support the reinstall_on_refresh parameter.\n    def refresh\n      if provider.reinstallable? &&\n        @parameters[:reinstall_on_refresh].value == :true &&\n        @parameters[:ensure].value != :purged &&\n        @parameters[:ensure].value != :absent &&\n        @parameters[:ensure].value != :held\n\n        provider.reinstall\n      end\n    end\n{code}\n\nI suggest we just look for a `def refresh` in the type, and attach the text of the comment directly preceding that method definition. \n\nIn the json output, maybe add refresh: true and refresh_behavior: doc. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32461", "fixedVersions": [], "id": "32461", "issueType": "New Feature", "key": "PDOC-66", "labels": ["generated-docs"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Document whether resource types react to refresh events", "timeSpent": "PT0S", "updated": "2019-08-12T15:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:dd7ba664-1e31-4b6c-9525-768d1f3babc2", "body": "It would be nice to have the ability to ensure that all parameters of a class or define are documented in some way. This could be added to tests to enforce quality, such as is common for linting.", "created": "2015-10-24T10:58:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Closing in favor of duplicate PDOC-68.", "created": "2016-09-14T15:16:00.000000"}], "components": [], "created": "2015-10-24T08:50:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cea1b0f5-fa7c-414b-9854-4f3e564a1f4c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6855cfbb"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2s13:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_28189548050_*|*_6_*:*_1_*:*_0"}], "description": "This would make it easy to incorporate Strings into CI pipelines. At the SeaGL conference [~accountid:557058:dd7ba664-1e31-4b6c-9525-768d1f3babc2] described to me a hacky script he uses to do this for several complicated modules he maintains.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32536", "fixedVersions": [], "id": "32536", "issueType": "Bug", "key": "PDOC-65", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cea1b0f5-fa7c-414b-9854-4f3e564a1f4c", "resolution": "Duplicate", "resolutionDate": "2016-09-14T15:16:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should have a flag to exit abnormally when warnings are issued", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "old code is old. We don't monkey patch anymore and we're dropping Puppet 3 soon anyway.", "created": "2018-03-05T11:55:00.000000"}], "components": [], "created": "2015-10-16T16:59:00.000000", "creator": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cea1b0f5-fa7c-414b-9854-4f3e564a1f4c", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c435b63"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymto7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_75239736169_*|*_6_*:*_2_*:*_13632"}], "description": "Currently we monkeypatch Yard's methodObject. Instead, we should subclass it and create a distinct Puppet4xObject and Puppet3xObject.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32430", "fixedVersions": [], "id": "32430", "issueType": "Improvement", "key": "PDOC-64", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cea1b0f5-fa7c-414b-9854-4f3e564a1f4c", "resolution": "Won't Do", "resolutionDate": "2018-03-05T11:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Create Puppet4xFunction and Puppet3xFunction code objects", "timeSpent": "PT0S", "updated": "2018-03-05T11:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Ping [~accountid:623c08e1562ab90069f8aed4] How can this be reproduced? Just run Strings against Puppet core and it is obvious?", "created": "2016-02-01T17:10:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Yup, I'm pretty sure you won't be able to miss it", "created": "2016-02-01T19:19:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "I'm not sure if this is really intended to work with strings as is, especially since the module specifically ignores itself to avoid raising a billion errors. Definitely not disagreeing that this should work, but it might be worth it to identify this as a bug vs a major feature. [~accountid:623e754d94742a00683f7cf0] if you have a chance could you weigh in on this?", "created": "2016-03-09T16:27:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "This is a Bug - as it is a major deficiency - the intention all along is to replace the old documentation features in puppet. Being able to generate the documentation for puppet itself is key. Now, this is not completely Puppet String's fault. As an example some of the 4.x functions have som clever constructs for types that we are going to address with the new function local type aliasing in Puppet 4.5.0.\n\nIt may also have worked (or partially worked at some point) - but it is now not working and needs to be fixed.", "created": "2016-03-09T18:53:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Okay I actually looked into this a little bit, basically what I was wondering if this was a regression  and/or if significant modification would be required to strings to make this work. Basically what I found is that this is basically a regression, because if you run Strings 0.2.0 against core puppet you get roughly the same errors you get from running just YARD:\n\nStrings 0.2.0: https://gist.github.com/HAIL9000/8dd91d0ab9b896a94859\nYARD: https://gist.github.com/HAIL9000/ef98094d54914d6afc52\n\nHowever if you use Strings 0.3.0 you start to get a ton of issues from the provider handler. I didn't do enough digging to see if these are legit errors (as in it actually is trying to parse a provider and failing) or if it's just strings trying to parse something as a provider when it's not:\n\nStrings 0.3.0: https://gist.github.com/HAIL9000/e131385b2b396cd06a60\n\nHowever even before this regression strings was pretty noisy running against puppet because YARD issues so many warnings. So I think what i'm wondering is if we care about strings running against ALL the code in the core puppet repository, or if we just want to document puppet-ee things like our functions, types, providers, etc. Because I think if we limit the files strings looks at, we'll see a lot less warnings and errors (because they're mostly coming from YARD parsing our ruby classes/methods or the provider handler trying to parse our source code).", "created": "2016-03-09T21:22:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Thanks [~accountid:623cffe88d8b9c0068b93ebf],\n{quote}\nHowever even before this regression strings was pretty noisy running against puppet because YARD issues so many warnings. So I think what i'm wondering is if we care about strings running against ALL the code in the core puppet repository, or if we just want to document puppet-ee things like our functions, types, providers, etc. Because I think if we limit the files strings looks at, we'll see a lot less warnings and errors (because they're mostly coming from YARD parsing our ruby classes/methods or the provider handler trying to parse our source code).\n{quote}\n\nAbsolutely! Strings has no business documenting the rest of Puppet as the intent is documentation from a Puppet Language aspect - not an implementation aspect. For that you would need to run Yard separately and on your own.\n\n", "created": "2016-03-10T06:32:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "I'm also in favor of ignoring non-puppet-y Ruby code.", "created": "2016-03-10T11:18:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Note on this: Peter's work fixes this on the strings side, but we'll still need to go into core and make a lot of docs updates. Peter also mentioned we should limit what strings looks at in core. Right now it globs all of lib/, but really we just want functions, types, providers, etc.\n\nOnce Peter's work is merged in, we can effectively call this ticket done. The work to update core docs is tracked in PDOC-87.", "created": "2016-09-12T17:18:00.000000"}], "components": [], "created": "2015-10-16T12:28:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@364926c4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-59"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymw9z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_213036412_*|*_1_*:*_1_*:*_26885125120_*|*_10007_*:*_1_*:*_324109067_*|*_3_*:*_1_*:*_1817139646_*|*_5_*:*_1_*:*_1867688355_*|*_6_*:*_1_*:*_0"}], "description": "Strings will bring back the goods from the core Puppet code, but it runs into some major problems as well. A bunch of them are probably from trying to gather docs that we don't need to gather? But I'm not sure. \n\nThis ticket represents Peter's general rewrite of strings, including the addition of new spec tests. The rewrite fixes many problems in strings itself, just leaving work on the core side to update docs to adhere to the new YARD standards.", "epicLinkSummary": "Improve behavior of Strings to support integration into Docs workflow ", "estimate": "PT0S", "externalId": "32365", "fixedVersions": ["PDOC 0.99.0"], "id": "32365", "issueType": "Bug", "key": "PDOC-63", "labels": [], "originalEstimate": "PT0S", "parent": "32534", "parentSummary": "Improve behavior of Strings to support integration into Docs workflow ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2016-09-18T22:31:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings outputs errors on puppet core", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Not sure how to read the description", "created": "2016-02-04T05:43:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "It doesn't process .pp functions at all. ", "created": "2016-02-04T12:44:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Peter's rewrite added full support for .pp functions. Resolving!", "created": "2016-09-28T16:51:00.000000"}], "components": [], "created": "2015-10-16T12:25:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3a53cb0f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2o1r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_30083125556_*|*_6_*:*_1_*:*_0"}], "description": "It's now possible to write functions in .pp files, stored in a module's {{functions}} directory. Docs forthcoming; Jorie's working on it. \n\nWe should capture docs for these functions as well, and we should probably store them in the puppet_functions namespace. To distinguish them from Ruby functions, we can either add a new element to them, or use a different value for function_api_version. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32361", "fixedVersions": [], "id": "32361", "issueType": "New Feature", "key": "PDOC-62", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2016-09-28T16:51:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Support functions written in the Puppet language", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "ping [~accountid:623c08e1562ab90069f8aed4] Are you saying that Strings picks that up and reports it as a single function? (named \"function_definition\" ??)\n\n(The logic in question is what makes it possible to call error, warning, info, notice, etc)", "created": "2016-02-01T17:14:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Uh, I think that's what I meant. It's been a while since I did this. ", "created": "2016-02-01T19:21:00.000000"}, {"author": "623c08e1562ab90069f8aed4", "body": "I think there was a copy-paste mishap in the original description of this ticket. The bogus function_definition function had nothing to do with the loglevel functions (which are just skipped by Strings, and I believe are in a separate ticket). ", "created": "2016-06-20T18:24:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Resolved in the rewrite.", "created": "2016-09-18T22:35:00.000000"}], "components": [], "created": "2015-10-16T12:23:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@337b2365"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-59"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr3j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_213264767_*|*_1_*:*_1_*:*_28702641560_*|*_10007_*:*_1_*:*_323998666_*|*_5_*:*_1_*:*_1867447751_*|*_6_*:*_1_*:*_0"}], "description": "This looks like it's part of the implementation for functions written in the Puppet language. ", "epicLinkSummary": "Improve behavior of Strings to support integration into Docs workflow ", "estimate": "PT0S", "externalId": "32323", "fixedVersions": ["PDOC 0.99.0"], "id": "32323", "issueType": "Bug", "key": "PDOC-61", "labels": [], "originalEstimate": "PT0S", "parent": "32534", "parentSummary": "Improve behavior of Strings to support integration into Docs workflow ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2016-09-18T22:35:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings finds bogus \"function_definition\" function", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": "623c08e1562ab90069f8aed4", "attachments": [{"attacher": "62450221ad6b7e006aa4e34c", "created": "2016-09-29T12:01:00.000000", "name": "screenshot-1.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12391"}], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I think we do not need the loop. I think adding new log levels is a static thing. \n\nWe can just as well write \"the 7 functions\" instead of the loop. Then strings would find them. We otherwise need to maintain this documentation in meta tags and ensure Strings pick them up.", "created": "2016-02-01T17:34:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Todo: figure out priority on this.", "created": "2016-09-12T17:20:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Priority: This must be done in order to be able to replace the existing way of extracting the documentation. If not done there would be no documentation for the log functions on the docs site unless added manually.\n\nThere are many different ways to solve this problem. A simple unroll is worth testing as it may be all that is needed.", "created": "2016-09-13T04:34:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Another problem: strings can't seem to find instances of {{newfunction}} inside of a method. The following yields no {{puppet function}} output from strings:\n\n{noformat}\n  def self.reset\n    # Runs a newfunction to create a function for each of the log levels\n    root_env = Puppet.lookup(:root_environment)\n    AnonymousModuleAdapter.clear(root_env)\n\n    Puppet::Parser::Functions::newfunction(:debug,\n                :environment => root_env,\n                :doc => \"Log a message on the server at level debug.\") do |vals|\n      send(:debug, vals.join(\" \"))\n    end\n...\nend\n{noformat}\n\nBut if I move the {{newfunction}} outside of the {{reset}} method, strings picks it up. Will have to investigate getting strings to handle this correctly.", "created": "2016-09-22T17:51:00.000000"}, {"author": "557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c", "body": "The Ruby function handler limits its detection to [\"namespace only\" calls|https://github.com/puppetlabs/puppet-strings/blob/master/lib/puppet-strings/yard/handlers/ruby/function_handler.rb#L20], which is why it won't see a call inside of a method.  Users don't generally (if ever) dynamically generate functions, so there's probably a perf benefit for being \"namespace only\" (at least one would hope so given that it could skip over parsing method bodies entirely).\n\nWhen I originally mentioned the logging functions to Nick, we thought perhaps we'd have a special way of documenting dynamically generated functions (sort of like the directives we have for metaprogrammed resource type parameters/properties)", "created": "2016-09-22T18:22:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Ah, thanks for the context [~accountid:557058:372bc64a-3ef7-46ac-9a0a-50bcf4819b9c] - I'll look into separate definitions.", "created": "2016-09-22T18:39:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Another possible approach is to use yard meta tags on the {{create_logging_functions}} method in {{static_loader.rb}}. And then get yard to scan and process those.\n\nMaking them be free standing 3.x or 4.x functions (like all others) would work, but is not the best approach since the static loader is a bit special and we have no mechanism for directing functions being autoloaded to end up in the static loader.\n\n(just some thoughts)", "created": "2016-09-23T04:41:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] makes sense - the only problem there is that {{create_logging_functions}} is private, so YARD won't pick it up :(", "created": "2016-09-23T10:45:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:623c0e7494742a00683e3f3f] came up with a few options for this today. On Monday we'll see what [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] thinks of them.", "created": "2016-09-23T17:37:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] alright, here are the two approaches we've got. Do you have thoughts on which you prefer?\n\n1) Use the YARD {{parse}} directive (http://www.rubydoc.info/gems/yard/file/docs/Tags.md#parse) to give YARD a hint about what the metaprogrammed functions will be: https://gist.github.com/whopper/8c0439e55ccc7c13dbc9ce6a2dd7b482\n\nThis is a simple addition of comments, though it is a bit ugly as YARD doesn't have a mechanism to loop over an array of items. Otherwise, we wouldn't have needed to write out each function.\n\n2) Break each of the functions into their own files and {{eval}} them in the static loader:\n\nhttps://gist.github.com/whopper/b0966df9e155b8fec12448918ff7e9b2\n\nThis requires us to find the proper way to evaluate the new functions in the static loader. For testing, we just used {{eval}} on the path to the function.", "created": "2016-09-26T15:20:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Solution 1 has the downside that it is using the 3.x function API as meta-meta here. Eventually we want to retire the 3.x function API. We then have an additional problem to solve.\n\nSolution 2 here we risk that functions in the function directory ends up being loaded and ending up in a different loader (by mistakes made in the future). This solution seems harder to maintain as a future change needs to go into all of the files. Here it is also unclear if it will actually work as the dispatcher is fake as the function reimplements the call method. To pursue on this path I think we need to create a new base class that the function inherits from so we can have a minimum of information in it (maintain the functionality in the base class). This seems like a lot of work at higher risk.\n\nWould using the 4.x API in the @!parse comments work? That would remove the only objection I had against Solution 1.\n\n\n\n\n", "created": "2016-09-26T15:52:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] ah, good call. I'll investigate using the 4.x API with @!parse. We should be able to do the same thing with it.", "created": "2016-09-26T15:57:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "PR is up at https://github.com/puppetlabs/puppet/pull/5299. PUP-6742 is the tracking puppet ticket.", "created": "2016-09-26T17:16:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Puppet CI passed with the changes to the logging functions at https://jenkins.puppetlabs.com/job/platform_puppet_intn-van-sys_master/398/. This ticket probably still warrants a review from [~accountid:623c08e1562ab90069f8aed4] before we resolve it.\n\nEdit: added a screenshot of strings output for the {{debug}} function. The JSON output is https://gist.github.com/whopper/980f7233fb99d48a8bdfe5f85ee484e6", "created": "2016-09-28T16:17:00.000000"}], "components": [], "created": "2015-10-16T12:22:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@447322e3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-97"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hynr3b:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_16383824_*|*_1_*:*_1_*:*_28703128364_*|*_10007_*:*_1_*:*_152812389_*|*_3_*:*_1_*:*_343864196_*|*_10009_*:*_1_*:*_596919024_*|*_5_*:*_1_*:*_429235372_*|*_6_*:*_1_*:*_0_*|*_10005_*:*_1_*:*_865095585"}], "description": "The functions like notice and warn are all defined in a loop over in lib/puppet/parser/functions.rb, so Strings can't see them the way it sees normal functions. \n\n{code}\n    # Runs a newfunction to create a function for each of the log levels\n    Puppet::Util::Log.levels.each do |level|\n      newfunction(level,\n                  :environment => Puppet.lookup(:root_environment),\n                  :doc => \"Log a message on the server at level #{level.to_s}.\") do |vals|\n        send(level, vals.join(\" \"))\n      end\n    end\n  end\n{code}", "epicLinkSummary": "Initial increment for puppet strings and docs workflow", "estimate": "PT0S", "externalId": "32578", "fixedVersions": ["PDOC 0.99.0"], "id": "32578", "issueType": "Bug", "key": "PDOC-60", "labels": [], "originalEstimate": "PT0S", "parent": "32434", "parentSummary": "Initial increment for puppet strings and docs workflow", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2016-10-05T14:05:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings skips docs for the log message functions", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "Also, some of the fixes might involve changes to the code we're targeting, rather than changes to Strings.", "created": "2015-10-16T12:21:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Moving this to triage sprint. These bugs prevents us fro using Strings to document puppet core.", "created": "2016-02-01T17:46:00.000000"}], "components": [], "created": "2015-10-16T12:19:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Language"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Puppet Developer Experience"}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7159407c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-7"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Strings for Docs"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "Done"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "purple"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymvhb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_28783041917_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_681646343"}], "description": "*Note:* this epic covers precursor work to improving the utility of puppet strings for the puppet docs team. Remaining work required to be minimally useful to the docs team is tracked in PDOC-97. Potential beyond the initial increment is tracked in PDOC-98.\n\nThe purpose of this epic is to allow the docs team to use Strings in order to document 4.x style functions. As part of supporting that goal, this epic will also contain tickets that are needed so that the docs team can integrate strings with their workflow. \n\nYou can point Strings at a checkout of Puppet's core Ruby code, and get something fairly useful! But there are some problems still. \n\nI'm mostly focusing on JSON behavior for this epic; I haven't looked at the yardoc website it generates, and am not sure what I'd find if I did. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32534", "fixedVersions": ["PDOC 0.99.0"], "id": "32534", "issueType": "Epic", "key": "PDOC-59", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "resolution": "Fixed", "resolutionDate": "2016-09-21T12:57:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Improve behavior of Strings to support integration into Docs workflow ", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "[~accountid:557058:8f824870-010d-4f9e-99c7-28e4e3a21752], thanks for reporting this. I'm reproducing this as well as some other similar issues when using the server command. I'll look into this further and see if I can figure out what's going on.", "created": "2015-10-07T13:11:00.000000"}, {"author": "557058:8f824870-010d-4f9e-99c7-28e4e3a21752", "body": "thanks Hailee,  \n\nany progress?", "created": "2015-11-10T13:44:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "[~accountid:557058:8f824870-010d-4f9e-99c7-28e4e3a21752] thanks for reminding me! We're going to pull this into a sprint soon so we can get this resolved for the next release. Sorry this fell off my radar. ", "created": "2015-11-10T16:33:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "[~accountid:557058:8f824870-010d-4f9e-99c7-28e4e3a21752], I fixed some errors that I was seeing with the `puppet strings server` command, but I haven't been able to reproduce the error that you're seeing. I think it may be due to something that changed in the parser, since your stack trace looks like that's where the errors are coming from.\n\nWould it be possible to provide me with the full manifest that you're running strings against so that I can reproduce this? I wasn't sure if that was the whole thing in the stack trace.\n\nThanks!", "created": "2015-12-08T11:18:00.000000"}, {"author": "557058:8f824870-010d-4f9e-99c7-28e4e3a21752", "body": "thanks Hailee,\n\nsure thing.  It's quite simple so here it is:\n\nclass bw_cron::aide {\n  case $::operatingsystem {\n    'RedHat': {\n  cron { \"old_aide\":\n  ensure => absent,\n  command => \"root /usr/sbin/aide --check\",\n  minute => 05,\n  hour   => 04,\n  user => 'root',\n  }\n  cron { \"aide\":\n  ensure => present,\n  command => \"/usr/sbin/aide --check > /dev/null 2>&1\",\n  minute => 05,\n  hour   => 04,\n  user => 'root',\n  }\n  }\n }\n}\n", "created": "2015-12-08T11:42:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Thanks so much for working with me on this, sorry it's taking a while. I still don't seem to be able to reproduce the error you're seeing, even with the manifest and running puppet 3.8.1. My feeling though is that this is something related to puppet itself rather than strings, since the error is coming from the parser (although the fact that this is only popping up in strings and not in general parsing seems very mysterious).\n\nIs there anyway you could quickly test this with a slightly newer version of PE (like 3.8.4) and let me know what happens?", "created": "2015-12-09T16:57:00.000000"}, {"author": "557058:8f824870-010d-4f9e-99c7-28e4e3a21752", "body": "no change,   \nwhat is funny is that running strings against the manifest individually produces no error.\n\n*Here's the output:*\n\n{color:#205081}[courtneybarnett@puppet2.sclab bw_cron]\n$puppet --version\n3.8.4 (Puppet Enterprise 3.8.3)\n$puppet strings server\n[error]: Unhandled exception in PuppetX::PuppetLabs::Strings::YARD::Handlers::HostClassHandler:\n[error]:   in `manifests/aide.pp`:4:\n\nclass bw_cron::aide {\n  case $::operatingsystem {\n    'RedHat': {\n  cron { 'old_aide':\n  ensure  => absent,\n  command => 'root /usr/sbin/aide --check',\n  minute  => 05,\n  hour    => 04,\n  user    => 'root',\n  }\n  cron { 'aide':\n  ensure  => present,\n  command => '/usr/sbin/aide --check > /dev/null 2>&1',\n  minute  => 05,\n  hour    => 04,\n  user    => 'root',\n  }\n  }\n  default: {}\n  }\n}\n\n[error]: ParseError: illegal comma separated argument list\n[error]: Stack trace:\n        /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/pops/parser/parser_support.rb:68:in `error'\n        /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/pops/parser/parser_support.rb:190:in `rescue in transform_calls'\n        /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/pops/parser/parser_support.rb:182:in `transform_calls'\n        egrammar.ra:73:in `_reduce_4'\n        /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/pops/parser/lexer2.rb:291:in `scan'\n        (eval):3:in `_racc_yyparse_c'\n\nError: Syntax error at '=='  at line 1:1\nError: Try 'puppet help strings server' for usage\n{color}", "created": "2015-12-11T13:13:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "[~accountid:623cffe88d8b9c0068b93ebf], I get a different stack trace from the latest error that [~accountid:557058:8f824870-010d-4f9e-99c7-28e4e3a21752] reported above using latest PE 3.8 build.\n\nversion {{3.8.4 (Puppet Enterprise 3.8.3-7-ga9c656d)}}\n\nh3. Steps to reproduce\n1. Install PE-3.8\n  * with beaker, the default answer file is sufficient\n\n2. Enable future parser on master\n  {{parser = future}} in {{master}} section of {{puppet.conf}} file on master\n\n3. Install strings module as instructed in the module readme\n{code}\npuppet resource package yard provider=gem\npuppet module install puppetlabs-strings\n{code}\n\n4. Run {{puppet strings server}}\n\nh3. Result\n{code}\n[root@gd1d7t4kk9pjz77 ~]# puppet strings server\n[error]: Unhandled exception in YARD::Handlers::Ruby::ClassHandler:\n[error]:   in `lib/puppet_x/puppetlabs/strings/yard/handlers/base.rb`:3:\n\n        3: class PuppetX::PuppetLabs::Strings::YARD::Handlers::Base < YARD::Handlers::Base\n\n[error]: ArgumentError: superclass #<yardoc class PuppetX::PuppetLabs::Strings::YARD::Handlers::Base> cannot be the same as the declared class #<yardoc class PuppetX::PuppetLabs::Strings::YARD::Handlers::Base>\n[error]: Stack trace:\n        /opt/puppet/lib/ruby/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/code_objects/class_object.rb:139:in `superclass='\n        /opt/puppet/lib/ruby/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/ruby/class_handler.rb:18:in `block (2 levels) in <class:ClassHandler>'\n        /opt/puppet/lib/ruby/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/base.rb:408:in `block in register'\n        /opt/puppet/lib/ruby/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/base.rb:405:in `each'\n        /opt/puppet/lib/ruby/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/base.rb:405:in `register'\n        /opt/puppet/lib/ruby/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/ruby/class_handler.rb:17:in `block in <class:ClassHandler>'\n\n>> YARD 0.8.7.6 documentation server at http://0.0.0.0:8808\n[2015-12-16 16:04:44] INFO  WEBrick 1.3.1\n[2015-12-16 16:04:44] INFO  ruby 1.9.3 (2014-11-13) [x86_64-linux]\n[2015-12-16 16:04:44] WARN  TCPServer Error: Address already in use - bind(2)\n[2015-12-16 16:04:44] INFO  WEBrick::HTTPServer#start: pid=13620 port=8808\n{code}", "created": "2015-12-16T17:09:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "[~accountid:557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced] Are you using the most recent version of puppet strings master? I was seeing that error too, this pull request fixed it for me: https://github.com/puppetlabs/puppetlabs-strings/pull/69\n\nIt's possible this same error is causing the stack trace Mike is seeing...? But since his errors are coming from the parser that seems a little unlikely. ", "created": "2015-12-17T11:17:00.000000"}, {"author": "557058:b3e6b0df-198d-45f8-9ba5-d41f90e80ced", "body": "Thanks [~accountid:623cffe88d8b9c0068b93ebf]. (facepalm). I was not using the latest puppet strings. When repeating the process with strings at SHA {{3a8067bad5729aa358e5e990a7f9e0737a7aaf58}} the server starts up without error.", "created": "2015-12-17T15:59:00.000000"}, {"author": "557058:8f824870-010d-4f9e-99c7-28e4e3a21752", "body": "Listen guys,  This has been open since september.  I see it's not a priority for you.  Given that, then this tool and other of your products lose value to us.  We'll simply find another way to work that doesn't involve plabs.", "created": "2016-02-08T14:55:00.000000"}, {"author": "557058:8f824870-010d-4f9e-99c7-28e4e3a21752", "body": "removing myself as a watcher.", "created": "2016-02-08T15:07:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "[~accountid:557058:8f824870-010d-4f9e-99c7-28e4e3a21752] I wouldn't say it's not a priority", "created": "2016-02-08T17:54:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Closing this because it's old, it's puppet 3, and the reporter has left.", "created": "2018-04-12T07:09:00.000000"}], "components": [], "created": "2015-09-25T14:40:00.000000", "creator": "557058:8f824870-010d-4f9e-99c7-28e4e3a21752", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@61c3e8de"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtr3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_1031460045_*|*_3_*:*_2_*:*_26364782986_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_3_*:*_52928699842"}], "description": "when running puppet strings server I see an unhandled exception.  I'm running PE 3.8.1 with the future parser.  The manifest it mentions doesn't appear to be the problem.  \n\nHere is the complete output:\n{code}\n[foo@puppet2.sclab bw_cron]$puppet strings server\n[error]: Unhandled exception in PuppetX::PuppetLabs::Strings::YARD::Handlers::HostClassHandler:\n[error]:   in `manifests/aide.pp`:4:\n{code}\n{code:puppet}\nclass bw_cron::aide {\n  case $::operatingsystem {\n    'RedHat': {\n  cron { 'old_aide':\n  ensure  => absent,\n  command => 'root /usr/sbin/aide --check',\n  minute  => 05,\n  hour    => 04,\n  user    => 'root',\n  }\n  cron { 'aide':\n  ensure  => present,\n  command => '/usr/sbin/aide --check > /dev/null 2>&1',\n  minute  => 05,\n  hour    => 04,\n  user    => 'root',\n  }\n  }\n  default: {}\n  }\n}\n{code}\n{code}\n[error]: ParseError: illegal comma separated argument list\n[error]: Stack trace:\n        /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/pops/parser/parser_support.rb:68:in `error'\n        /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/pops/parser/parser_support.rb:190:in `rescue in transform_calls'\n        /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/pops/parser/parser_support.rb:182:in `transform_calls'\n        egrammar.ra:72:in `_reduce_4'\n        /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/pops/parser/lexer2.rb:285:in `scan'\n        (eval):3:in `_racc_yyparse_c'\n\nError: Syntax error at '=='  at line 1:1\nError: Try 'puppet help strings server' for usage\n{code}", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32559", "fixedVersions": [], "id": "32559", "issueType": "Bug", "key": "PDOC-58", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:8f824870-010d-4f9e-99c7-28e4e3a21752", "resolution": "Fixed", "resolutionDate": "2018-04-12T07:09:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "strings server throws unhandled exception", "timeSpent": "PT0S", "updated": "2018-04-12T07:09:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c14e0b75ca8007056d418", "body": "Validated with puppet-strings SHA:5206c8c62e91b564ae1de1341c662a21b5740bb2 using the test file given in the ticket description and the new output does not have the nil and extra quotes\n{code}\n[warn]: @param tag types do not match the code. The s2\n    parameter is declared as types [\"String\"] in the docstring,\n    but the code specifies the types [\"Enum[\\\"running\\\",\\\"stopped\\\"]\"]\n    in the file test.rb near line 5.\n{code}", "created": "2015-09-23T14:09:00.000000"}], "components": [], "created": "2015-09-18T17:16:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@acc89b1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2acv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Work for Ian"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_68415134_*|*_1_*:*_1_*:*_3799084_*|*_10007_*:*_1_*:*_257496751_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_91123748"}], "description": "In warnings and documentation Strings will sometimes show quotes which aren't necessary. This was pointed out by Branan in the Strings demo. There are also a bunch of annoying 'nil's in the output.\n\nWe got:\n{code}\n[warn]: @param tag types do not match the code. The s2\n    parameter is declared as types [\"String\"] in the docstring,\n    but the code specifies the types [nil, \"'Enum[\\\"running\\\",\\\"stopped\\\"]'\"]\n    in the file 4xtyped.rb near line 5.\n{code}\n\nWe expected:\n{code}\n[warn]: @param tag types do not match the code. The s2\n    parameter is declared as types [\"String\"] in the docstring,\n    but the code specifies the types [\"Enum[\\\"running\\\",\\\"stopped\\\"]\"]\n    in the file 4xtyped.rb near line 5.\n{code}\n\nSample code:\n{code}\n# @param a [Hash] comment\n# @param b [String] comment\n# @param s1 [Hash] comment\n# @param s2 [String] comment\nPuppet::Functions.create_function(:min) do\n  dispatch :min do\n    param 'Hash[String,String]', :a\n    param 'Numeric', :b\n  end\n\n  dispatch :min_s do\n    param 'Hash[String,Optional[String]]', :s1\n    param 'Enum[\"running\",\"stopped\"]', :s2\n  end\n\n  def min(x,y)\n    x <= y ? x : y\n  end\n\n  def min_s(x,y)\n    cmp = (x.downcase <=> y.downcase)\n    cmp <= 0 ? x : y\n  end\nend\n\n{code}", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32421", "fixedVersions": ["PDOC 0.3.1"], "id": "32421", "issueType": "Bug", "key": "PDOC-57", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2015-09-23T14:10:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings prints unnecessary quotes", "timeSpent": "PT0S", "updated": "2015-10-01T14:18:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c14e0b75ca8007056d418", "body": "Validated with puppet-strings SHA: d965d06bcab12c9806e46f7f225fe86e90369623\n\n{code}\n\n[root@khmjqkr8x7ocaal bar]# cat manifests/init.pp\n# Docstring\n# @param notatype\n# @param barname Float\n# @param barval [String]\ndefine foo::bar ( String $barname,  Float $barval )\n{\n\n   notify {'$barname':}\n\n   notify {'$barval':}\n\n}\n\n[root@khmjqkr8x7ocaal bar]# puppet strings\n[warn]: The parameter notatype is documented, but doesn't exist in\n    your code, in file manifests/init.pp near line 5.\n[warn]: @param tag types do not match the code. The barval\n    parameter is declared as types [\"String\"] in the docstring,\n    but the code specifies the types [\"Float\"]\n    in the file manifests/init.pp near line 5.\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     1 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     0 (    0 undocumented)\n 100.00% documented\n{code}", "created": "2015-09-22T16:31:00.000000"}], "components": [], "created": "2015-09-18T17:13:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@715c1a0c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2acn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Work for Ian"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "22/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_68543579_*|*_1_*:*_1_*:*_3978181_*|*_10007_*:*_1_*:*_257395254_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_13261380"}], "description": "See Jo Rhett's example on PDOC-21 for an example.\n\nUsing the below file, we got:\n{code}\n[warn]: The parameter notatype is documented, but doesn't exist in\n    your code, in file manifests/defined_type.pp near line 6.\n[warn]: @param tag types do not match the code. The barval\n    parameter is declared as types [\"String\"] in the docstring,\n    but the code specifies the types [Puppet::Pops::Types::PFloatType]\n    in the file manifests/defined_type.pp near line 6.\n{code}\nWe expected:\n{code}\n[warn]: The parameter notatype is documented, but doesn't exist in\n    your code, in file manifests/defined_type.pp near line 6.\n[warn]: @param tag types do not match the code. The barval\n    parameter is declared as types [\"String\"] in the docstring,\n    but the code specifies the types [\"Float\"]\n    in the file manifests/defined_type.pp near line 6.\n{code}\nContents of the file:\n{code}\n\n# Docstring\n# @param notatype\n# @param barname Float\n# @param barval [String]\ndefine foo::bar ( String $barname,  Float $barval )\n{\n\n   notify {'$barname':}\n\n   notify {'$barval':}\n\n}\n\n{code}", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32363", "fixedVersions": ["PDOC 0.3.1"], "id": "32363", "issueType": "Bug", "key": "PDOC-56", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2015-09-22T16:32:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings prints type checking warnings incorrectly for defined types.", "timeSpent": "PT0S", "updated": "2015-10-01T14:17:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c08e1562ab90069f8aed4", "body": "This doesn't appear to have any info about what this is for, so in short: Ruby-based types and providers can use all kinds of impenetrable metaprogramming to tersely create objects, and it seems impossible to determine what those objects are (and what their docstrings are) with a YARD-like static analysis of the code. To document things like the core Nagios types, we need an ability to explicitly override metadata for objects in a resource type. ", "created": "2016-09-12T16:01:00.000000"}, {"author": "557058:1b9bde12-f0a1-4355-ab73-7fc4ec69ba79", "body": "Wow. I have no idea if we still need this or not. A lot of the core types have since been moved into modules, but given the types that we still have, maybe this is part of the issue with that output being inaccurate. Consult with Strings devs.", "created": "2019-08-12T15:23:00.000000"}], "components": [], "created": "2015-09-18T11:39:00.000000", "creator": "623c08e1562ab90069f8aed4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17f775c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtnz:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Aug/19"}], "description": "You can use a YARD tag to add a docstring for a non-discoverable parameter. It should also be possible to add default values and allowed values for that parameter. ", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32564", "fixedVersions": [], "id": "32564", "issueType": "Improvement", "key": "PDOC-55", "labels": ["generated-docs"], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c08e1562ab90069f8aed4", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "@!puppet.type.parameter (and property) directive should be able to add metadata", "timeSpent": "PT0S", "updated": "2019-08-12T15:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c17d4761efb0069ce0954", "body": "Thanks to Rob Reynolds for reporting the Chocolatey issue.", "created": "2015-09-16T18:01:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "Validated in puppet-strings SHA: d965d06bcab12c9806e46f7f225fe86e90369623\n1) With puppetlabs-apt module: \n{code}\n[root@khmjqkr8x7ocaal apt]# pwd\n/etc/puppetlabs/code/environments/production/modules/apt\n[root@khmjqkr8x7ocaal apt]# puppet strings\nFiles:          13\nModules:         1 (    1 undocumented)\nClasses:         1 (    1 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         1 (    0 undocumented)\nPuppet Classes:     4 (    4 undocumented)\nPuppet Defined Types:     6 (    3 undocumented)\nPuppet Types:     1 (    1 undocumented)\nPuppet Providers:     1 (    1 undocumented)\n 26.67% documented\n\n[root@khmjqkr8x7ocaal apt]# ls -l doc/apt_key*\n-rw-r--r--. 1 root root 3268 Sep 22 16:23 doc/apt_key_provider.html\n-rw-r--r--. 1 root root 6069 Sep 22 16:23 doc/apt_key_type.html\n[root@khmjqkr8x7ocaal apt]# cat doc/puppet_provider_list.html\n...\n      <ul id=\"full_list\" class=\"class\">\n        <li><span class='object_link'><a href=\"apt_key_provider.html\" title=\"apt_key_provider (provider)\">apt_key</a></span><small class='search_info'>Top Level Namespace</small></li>\n\n[root@khmjqkr8x7ocaal apt]# cat doc/puppet_type_list.html\n      <ul id=\"full_list\" class=\"class\">\n        <li><span class='object_link'><a href=\"apt_key_type.html\" title=\"apt_key_type (type)\">apt_key</a></span><small class='search_info'>Top Level Namespace</small></li>\n\n{code}\n\n2) With puppet-chocolatey module\n\n{code}\n\n[root@khmjqkr8x7ocaal chocolatey]# pwd\n/etc/puppetlabs/code/environments/production/modules/chocolatey\n[root@khmjqkr8x7ocaal chocolatey]# puppet strings\nFiles:           5\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     4 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     1 (    0 undocumented)\n 100.00% documented\n\n[root@khmjqkr8x7ocaal chocolatey]# ls -l doc/chocolatey*\n-rw-r--r--. 1 root root 6496 Sep 22 16:45 doc/chocolatey.html\n-rw-r--r--. 1 root root 4085 Sep 22 16:45 doc/chocolatey_provider.html\n\n[root@khmjqkr8x7ocaal chocolatey]# cat doc/puppet_provider_list.html\n      <ul id=\"full_list\" class=\"class\">\n        <li><span class='object_link'><a href=\"chocolatey_provider.html\" title=\"chocolatey_provider (provider)\">chocolatey</a></span><small class='search_info'>Top Level Namespace</small></li>\n\n{code}\n", "created": "2015-09-22T18:01:00.000000"}], "components": [], "created": "2015-09-16T17:42:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@bf86bf5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Free ?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons", "value": "Yes"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz2907:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Work for Ian"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_68362643_*|*_1_*:*_1_*:*_432555300_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_159667865"}], "description": "When you run strings on the apt module it says in the statistics that it is documenting the provider but not the type. When you look at the resulting documentation it links to the provider page in the type menu. The provider menu is empty. The provider page does not exist anywhere in the documented html.\n\nSimilarly, when you document the chocolatey module the provider is not listed in the menu.\n\n{code}\nFiles:          18\nModules:         1 (    1 undocumented)\nClasses:         1 (    1 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         1 (    0 undocumented)\nPuppet Classes:     8 (    5 undocumented)\nPuppet Defined Types:     8 (    6 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     1 (    1 undocumented)\n 30.00% documented\n{code}\n\nThis is because the apt module's type and provider are both named apt_key and there is a puppet class named chocolatey as well as a provider.\n\nActual behavior:\nApt module:\n* Strings only documents the provider and puts it under the type menu!\nChocolatey module:\n* Strings only documents the class\n\nExpected behavior (new):\nFor the apt module:\n* Strings documents the apt_key provider in doc/apt_key_provider.html\n* Strings documents the apt_key type in doc/apt_key_type.html\n* apt_key is present in the Puppet Types menu\n* apt_key is present in the Puppet Providers menu\n* 1 type is documented in the statistics output\n* 1 provider is documented in the statistics output\n\nFor the chocolatey module:\n* Strings documents the chocolatey provider in doc/chocolatey_provider.html\n* Strings documents the chocolatey type in doc/chocolatey.html\n* chocolatey is present in the Puppet Providers menu\n* chocolatey is present in the Puppet Classes menu\n* 1 provider is documented in the statistics output\n* 1 puppet class is documented in the statistics output'\n\nApt module: https://github.com/puppetlabs/puppetlabs-apt\nChocolatey module: https://github.com/chocolatey/puppet-chocolatey", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32359", "fixedVersions": ["PDOC 0.3.1"], "id": "32359", "issueType": "Bug", "key": "PDOC-54", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2015-09-24T09:12:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Types, Providers, and Classes with the same names may conflict.", "timeSpent": "PT0S", "updated": "2015-10-01T14:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c14e0b75ca8007056d418", "body": "{code}\n[root@x7dmn8uep2jaty0 foo]# pwd\n/etc/puppetlabs/code/environments/production/modules/foo\n[root@x7dmn8uep2jaty0 foo]# cat lib/puppet/type/book.rb\n\n# @!puppet.type.param property_hash.  This parameter needs to be explicitly\n# documented as it is generated by mk_resource_methods\nPuppet::Type.newtype(:book) do\n    @doc = \"Get a book from somewhere\"\n\n    feature :draw, \"The ability to draw.\"\n\n    # This function does some metaprogramming on the new type.\n    mk_resource_methods\n\n    ensurable\n\n    newparam(:name) do\n      isnamevar\n        desc \"The name of the book\"\n    end\n\n    newparam(:color) do\n    desc <<-'EOT'\n         The color of the book\n    EOT\n      newvalues(:red, :green, :blue, :purple)\n    end\n\n    newproperty(:enable) do\n      newvalue(:true)\n      newvalue(:false)\n    end\n\n    newproperty(:covertype) do\n      desc \"Specify hardcover or paperback\"\n      defaultto \"paperback\"\n    end\nend\n\n[root@x7dmn8uep2jaty0 foo]# puppet strings\n[error]: Unhandled exception in PuppetX::PuppetLabs::Strings::YARD::Handlers::PuppetTypeHandler:\n[error]:   in `lib/puppet/type/book.rb`:3:\n\n\t3: Puppet::Type.newtype(:book) do\n\n[error]: TypeError: no implicit conversion of nil into Array\n[error]: Stack trace:\n\t/etc/puppetlabs/code/environments/production/modules/strings/lib/puppet_x/puppetlabs/strings/yard/tags/directives.rb:6:in `+'\n\t/etc/puppetlabs/code/environments/production/modules/strings/lib/puppet_x/puppetlabs/strings/yard/tags/directives.rb:6:in `call'\n\t/opt/puppetlabs/puppet/lib/ruby/gems/2.1.0/gems/yard-0.8.7.6/lib/yard/tags/library.rb:246:in `directive_call'\n\t/opt/puppetlabs/puppet/lib/ruby/gems/2.1.0/gems/yard-0.8.7.6/lib/yard/tags/library.rb:200:in `puppet_type_param_directive'\n\t/opt/puppetlabs/puppet/lib/ruby/gems/2.1.0/gems/yard-0.8.7.6/lib/yard/tags/library.rb:292:in `directive_create'\n\t/opt/puppetlabs/puppet/lib/ruby/gems/2.1.0/gems/yard-0.8.7.6/lib/yard/docstring_parser.rb:216:in `create_directive'\n\nFiles:           2\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     1 (    0 undocumented)\nPuppet Providers:     1 (    0 undocumented)\n 100.00% documented\n{code}\n\nIt does not crash if the '=' symbol is removed after '@doc'. But the html output is not getting generated for the new type.\nPuppet Types:     0 (    0 undocumented)\nThere is no book.html file in the 'doc' directory.\n\n{code}\n[root@x7dmn8uep2jaty0 foo]# head -4 lib/puppet/type/book.rb\n# @!puppet.type.param property_hash.  This parameter needs to be explicitly\n# documented as it is generated by mk_resource_methods\nPuppet::Type.newtype(:book) do\n    @doc  \"Get a book from somewhere\"\n[root@x7dmn8uep2jaty0 foo]# puppet strings\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     1 (    0 undocumented)\n 100.00% documented\n{code}", "created": "2015-09-14T17:06:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "Validated with puppet-strings SHA: 3c885cf550b71f3550f35af6b4821e3846a761e3 and no crashing observed.\n{code}\n[root@tjsif1buguekw02 foo]# pwd\n/etc/puppetlabs/code/environments/production/modules/foo\n[root@tjsif1buguekw02 foo]# head -4 lib/puppet/type/book.rb\n# @!puppet.type.param property_hash.  This parameter needs to be explicitly\n# documented as it is generated by mk_resource_methods\nPuppet::Type.newtype(:book) do\n    @doc = \"Get a book from somewhere\"\n\n*[root@tjsif1buguekw02 foo]# puppet strings\nFiles:           2\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     1 (    0 undocumented)\nPuppet Providers:     1 (    0 undocumented)\n 100.00% documented*\n\n{code}", "created": "2015-09-16T17:51:00.000000"}], "components": [], "created": "2015-09-14T16:54:00.000000", "creator": "623c14e0b75ca8007056d418", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4953bc6f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoehj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found as part of review for PDOC-35"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_77001404_*|*_1_*:*_1_*:*_58801844_*|*_10007_*:*_1_*:*_26837924_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_13587662"}], "description": "puppet-string crashes when '@doc = some text' statement is used along with `@!puppet.type.param` directive when describing a custom type as described in the README.\n\n{code}\n[root@x7dmn8uep2jaty0 foo]# pwd\n/etc/puppetlabs/code/environments/production/modules/foo\n[root@x7dmn8uep2jaty0 foo]# head -4 lib/puppet/type/book.rb\n# @!puppet.type.param property_hash.  This parameter needs to be explicitly\n# documented as it is generated by mk_resource_methods\nPuppet::Type.newtype(:book) do\n    @doc = \"Get a book from somewhere\"\n{code}\n\nIf the '=' symbol is omitted after '@doc', then it does not crash. But the html output is not getting generated in this case\n{code}\n[root@x7dmn8uep2jaty0 foo]# head -4 lib/puppet/type/book.rb\n# @!puppet.type.param property_hash.  This parameter needs to be explicitly\n# documented as it is generated by mk_resource_methods\nPuppet::Type.newtype(:book) do\n    @doc \"Get a book from somewhere\"\n{code}\n\nSee comments for the test file.\n\n", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32532", "fixedVersions": ["PDOC 0.3.0"], "id": "32532", "issueType": "Bug", "key": "PDOC-53", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c14e0b75ca8007056d418", "resolution": "Fixed", "resolutionDate": "2015-09-16T17:51:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "puppet-strings crashing when \"@doc =\" is used along with `@!puppet.type.param`", "timeSpent": "PT0S", "updated": "2015-09-21T17:55:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c14e0b75ca8007056d418", "body": "Validated with puppet-strings SHA: 3c885cf550b71f3550f35af6b4821e3846a761e3 \n{code}\n[root@tjsif1buguekw02 foo]# pwd\n/etc/puppetlabs/code/environments/production/modules/foo\n[root@tjsif1buguekw02 foo]# cat lib/puppet/type/book.rb\n# @!puppet.type.param property_hash.  This parameter needs to be explicitly documented\nPuppet::Type.newtype(:book) do\n    @doc = \"Get a book from somewhere\"\n    feature :draw, \"The ability to draw.\"\n\n    mk_resource_methods\n\n    ensurable\n\n    newparam(:name) do\n      isnamevar\n        desc \"The name of the book\"\n    end\n    newparam(:color) do\n      desc \"Your color\"\n      newvalues(:red, :green, :blue, :purple)\n    end\n\n    newproperty(:enable) do\n      newvalue(:true)\n      newvalue(:false)\n    end\n    newproperty(:covertype) do\n      desc \"Specify hardcover or paperback\"\n      defaultto \"paperback\"\n    end\nend\n*[root@tjsif1buguekw02 foo]# puppet strings\nFiles:           2\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     1 (    0 undocumented)\nPuppet Providers:     1 (    0 undocumented)\n 100.00% documented*\n[root@tjsif1buguekw02 foo]# cat doc/book.html\n </p></div></li><li><span class=\"name\">enable </span><span class=\"type\">(Property) </span>\n<b> Allowed Values: </b><ul><li><tt>:true</tt></li><li><tt>:false</tt></li></ul></li><li><span class=\"name\">property_hash. </span><span class=\"type\"></span> - <div class=\"inline\"><p>\n<p>This parameter needs to be explicitly documented</p>\n{code}", "created": "2015-09-16T18:05:00.000000"}], "components": [], "created": "2015-09-14T16:38:00.000000", "creator": "623c14e0b75ca8007056d418", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@687f1ea4"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoehb:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Found as part of review for PDOC-35"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_76999095_*|*_1_*:*_1_*:*_60368494_*|*_10007_*:*_1_*:*_26245623_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_79049823"}], "description": "The special directive `@!puppet.provider.param` does not generate a description of the parameter in the output html as described in the puppet-strings README.\n{code}\n[root@x7dmn8uep2jaty0 foo]# pwd\n/etc/puppetlabs/code/environments/production/modules/foo\n[root@x7dmn8uep2jaty0 foo]# cat lib/puppet/type/book.rb\n# @!puppet.type.param property_hash.  This parameter needs to be explicitly\n# documented as it is generated by mk_resource_methods\nPuppet::Type.newtype(:book) do\n    @doc  \"Get a book from somewhere\"\n\n    feature :draw, \"The ability to draw.\"\n\n    # This function does some metaprogramming on the new type.\n    mk_resource_methods\n\n    ensurable\n\n    newparam(:name) do\n      isnamevar\n        desc \"The name of the book\"\n    end\n\n    newparam(:color) do\n    desc <<-'EOT'\n         The color of the book\n    EOT\n      newvalues(:red, :green, :blue, :purple)\n    end\n\n    newproperty(:enable) do\n      newvalue(:true)\n      newvalue(:false)\n    end\n\n    newproperty(:covertype) do\n      desc \"Specify hardcover or paperback\"\n      defaultto \"paperback\"\n    end\nend\n{code}\n\nThe book.html generated by $puppet strings does not include a description of property_hash parameter", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32459", "fixedVersions": ["PDOC 0.3.0"], "id": "32459", "issueType": "Bug", "key": "PDOC-52", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c14e0b75ca8007056d418", "resolution": "Fixed", "resolutionDate": "2015-09-17T12:02:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "The special directive  `@!puppet.type.param` is not working with types", "timeSpent": "PT0S", "updated": "2015-09-21T17:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a480b9b54ec0068b0724e", "body": "Very close to done - when https://github.com/puppetlabs/puppetlabs-strings/pull/96 is merged this could be closed.", "created": "2016-09-02T11:31:00.000000"}], "components": [], "created": "2015-09-14T16:10:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7aed7ae8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtnr:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "02/Sep/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_78007427409_*|*_6_*:*_1_*:*_0"}], "description": "We monkey patch enough of yard that we will be sensitive to changes in Yards private API (such as it is). We should make Strings depend on a minor and probably even bugfix version of Yard.\nWe are currently at version 0.8.7.6 of yard. I think we will want to pin to 0.8.7.* and evaluate compatibility with future yard releases as they come.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32362", "fixedVersions": [], "id": "32362", "issueType": "Bug", "key": "PDOC-51", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2018-03-05T11:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Pin yard to a very specific version", "timeSpent": "PT0S", "updated": "2018-03-05T11:53:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c17d4761efb0069ce0954", "body": "Thanks for taking the time to report this.\n\nThis is actually what we expect. The most recent version of the README documentation instructs you to install the Yard gem after installing Strings. Please reread the README and let us know if you think out instructions are unclear or if you have ideas on how to make this more obvious.\n\n", "created": "2015-09-14T16:01:00.000000"}, {"author": "557058:3f6d53ac-921c-44ec-a73f-89a50ea7e0a9", "body": "This was an error on my part. Didn't add yard and redcarpet to Gemfile.\n\nThanks!", "created": "2015-09-18T14:03:00.000000"}], "components": [], "created": "2015-09-14T07:21:00.000000", "creator": "557058:3f6d53ac-921c-44ec-a73f-89a50ea7e0a9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6a74989b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz26jz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_10546735931_*|*_6_*:*_1_*:*_0"}], "description": "When running puppet strings using the puppet 4.2.1 gem I receive the following error:\n\n\n{noformat}\n[ptierno@petes-thinkpad besagent]$ puppet strings\nError: The 'yard' gem must be installed in order to use this face.\nError: Try 'puppet help strings yardoc' for usage\n{noformat}\n\nUsing `puppet resource` with the `puppet_gem provider` fails since this is a gem install of puppet.\n\n\n{noformat}\n[ptierno@petes-thinkpad besagent]$ puppet resource package yard provider=puppet_gem\nError: /Package[yard]: Provider puppet_gem is not functional on this host\nError: Could not run: Provider puppet_gem is not functional on this host\n{noformat}\n\n\n{noformat}\n[ptierno@petes-thinkpad besagent]$ irb\n1.9.3-p551 :001 > require 'puppet'\n => true \n1.9.3-p551 :002 > Puppet.features.yard?\n => false\n{noformat}\n", "environment": "\n{noformat}\n[ptierno@petes-thinkpad besagent]$ puppet --version\np4.2.1\n{noformat}\n\n{noformat}\n[ptierno@petes-thinkpad besagent]$ puppet module list\n/home/ptierno/.puppetlabs/etc/code/modules\n\u2514\u2500\u2500 puppetlabs-strings (v0.2.0)\n{noformat}\n\n{noformat}\n[ptierno@petes-thinkpad besagent]$ rvm list\n\nrvm rubies\n\n=> ruby-1.9.3-p551 [ x86_64 ]\n   ruby-2.1.7 [ x86_64 ]\n * ruby-2.2.3 [ x86_64 ]\n\n# => - current\n# =* - current && default\n#  * - default\n{noformat}\n\n{noformat}\n[ptierno@petes-thinkpad besagent]$ gem list yard\n\n*** LOCAL GEMS ***\n\nyard (0.8.7.6)\n{noformat}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32457", "fixedVersions": [], "id": "32457", "issueType": "Bug", "key": "PDOC-50", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:3f6d53ac-921c-44ec-a73f-89a50ea7e0a9", "resolution": "Fixed", "resolutionDate": "2016-01-14T07:59:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "The `yard` feature missing on gem install of puppet `4.2.1`", "timeSpent": "PT0S", "updated": "2016-01-14T07:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "body": "Verified that the warnings now are multiline and are prefixed with \"[warn]\".\nAlso verified the variety of cases of name and type mismatches in addition to unused documented parameter name cases.\nOne scenario that does not generate a warning is the use of a parameter that is not described in a doc string.  In this case Yard does not generate a warning, so strings does not.", "created": "2015-09-16T11:08:00.000000"}], "components": [], "created": "2015-09-11T15:00:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@469ecf23"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz269j:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Needed for 0.3.0 release."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "16/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_317152354_*|*_1_*:*_1_*:*_3022123_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_97871597"}], "description": "Someday we'll need our own logger but for now just a little cleanup.\n\n1. All warnings should start with 'warn:'\n2. Long warnings should be broken onto multiple lines.\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32455", "fixedVersions": ["PDOC 0.3.0"], "id": "32455", "issueType": "Bug", "key": "PDOC-49", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2015-09-16T11:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Improve warnings", "timeSpent": "PT0S", "updated": "2015-09-16T17:49:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c17d4761efb0069ce0954", "body": "We currently don't do anything with the @author tag and have no plans to. Do you think this is an important feature which should appear in the documentation? If so, where would you like it to appear in the code and the documentation?\n\nI don't see the usecase for sprinkling an @author on every puppet function and provider.", "created": "2015-09-14T16:05:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "The default template current sets up a large header area to list the authors. Why not use the tag and take advantage of YARD's capability?", "created": "2015-09-14T16:21:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "This has recently been revisited and we've decided not to display the @author tag. From a docs perspective, the author information muddies up the document itself without adding a lot of value. We want this to be reference material that contributes to the usability of the module and we feel like listing the author doesn't do that.", "created": "2018-03-05T11:53:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "So this answer would make sense if Author information didn't currently consume multiple lines in the template. Are you removing the author content from the module skeleton?\n\nMy proposal doesn't increase the information, it makes it indexable and linkable.\n\n{code}\n$ puppet module generate --skip-interview author-tag\nNotice: Generating module at /Users/jorhett/src/tag... (snip)\n\n$ grep -i author tag/manifests/init.pp\n# Authors\n# Author Name <author@domain.com>\n{code}", "created": "2018-03-05T12:16:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Apologies, from the description I thought you were referring to the yard-style @author tag.\n\nYeah, I do see the author content in the module skeletons used by {{puppet module generate}}. However, we are encouraging users to try the new PDK for this task. It uses https://github.com/puppetlabs/pdk-templates and no author content is present in those templates. ", "created": "2018-03-05T13:08:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "I was referring to that author tag. My idea was that if we are going to waste a few lines with that detail, let's use the tag. Since the PDF templates don't contain this it does seem to be going away so I agree that it's not helpful. I never loved that part of the template.", "created": "2018-03-05T20:39:00.000000"}], "components": [], "created": "2015-09-07T20:57:00.000000", "creator": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@38e545f9"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtnj:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_78594943462_*|*_6_*:*_1_*:*_0"}], "description": "Tagged authors do not appear in the final output. They are completely consumed.\n\n{code}\n# @author Jo Rhett <jo@example.com>\n{code}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32577", "fixedVersions": [], "id": "32577", "issueType": "Bug", "key": "PDOC-48", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "resolution": "Won't Do", "resolutionDate": "2018-03-05T11:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "@author tag is swallowed up", "timeSpent": "PT0S", "updated": "2018-03-05T20:39:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Not sure this was ever implemented. Sounds like a nice-to-have, but I don't see it happening in the near future.", "created": "2018-03-05T11:44:00.000000"}], "components": [], "created": "2015-09-02T17:54:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@996a17f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt2n:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "05/Mar/18"}], "description": "Complicated types and providers need a \"table of contents\" of parameters and providers kind of like this:\nhttp://docs.puppetlabs.com/references/latest/type.html#file-attributes\n\nOr the contents menu after the article abstract on wikipedia:\nhttps://en.wikipedia.org/wiki/Puppet_Labs", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32420", "fixedVersions": [], "id": "32420", "issueType": "Bug", "key": "PDOC-47", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "status": "Accepted", "statusCategory": "To Do", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet types and providers need in page navigation menu", "timeSpent": "PT0S", "updated": "2019-08-06T17:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c17d4761efb0069ce0954", "created": "2015-09-02T17:51:00.000000", "name": "Screen Shot 2015-09-02 at 4.50.48 PM.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12387"}], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "No longer an issue with YARD 0.9.5.", "created": "2016-11-04T13:06:00.000000"}], "components": [], "created": "2015-09-02T17:51:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@35dfc8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz218v:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37048479598_*|*_6_*:*_1_*:*_0"}], "description": "The dropdown menus at the top of yard are all fixed on the upper right corner. They should float under the menu being clicked on.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32356", "fixedVersions": [], "id": "32356", "issueType": "Bug", "key": "PDOC-46", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2016-11-04T13:06:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Dropdown menus are in wrong place", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "merged to master at: eeeb89f", "created": "2015-09-07T06:25:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "Validated with puppet-strings SHA:811df7d84dc205a9063d36a21ab3bbc67c799791\n\n{code}\n[root@pxsv4a598l89tqu modules]# puppet strings /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/defined.rb\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         2 (    1 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     0 (    0 undocumented)\n 50.00% documented\n\n[root@pxsv4a598l89tqu ~]# puppet strings test.rb\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         2 (    2 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     0 (    0 undocumented)\n 0.00% documented\n\n[root@pxsv4a598l89tqu ~]# cat test.rb\nPuppet::Functions.create_function :'max' do\n  def max(num_a, num_b)\n     num_a >= num_b ? num_a : num_b\n  end\nend\n{code}\n\nBefore fix, Strings crashed with error message:\n{code}\n[root@e77ig9jpwfyd6i3 puppetlabs-strings]# puppet strings /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/defined.rb\n[error]: Unhandled exception in Puppet4xFunctionHandler:\n[error]:   in `/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/functions/defined.rb`:69:\n\n\t69: Puppet::Functions.create_function(:'defined', Puppet::Functions::InternalFunction) do\n\n[error]: ArgumentError: invalid empty object name\n[error]: Stack trace:\n{code}", "created": "2015-09-10T10:54:00.000000"}], "components": [], "created": "2015-09-01T16:32:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7bf44674"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz22dj:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Before this, some unusual ruby constructs used as function names in the Ruby API could cause Puppet Strings to crash."}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Found"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "was found and worked on, but tagged wrong - did not show up on board."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_269025733_*|*_1_*:*_2_*:*_481506610_*|*_10007_*:*_2_*:*_297665_*|*_3_*:*_1_*:*_150901_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_6347325"}], "description": "This file has very unusual, but still apparently legal, syntax.\n{code}\nPuppet::Functions.create_function(:'defined', ....\n{code}\nA simple fix, handle that type of symbol.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32531", "fixedVersions": ["PDOC 0.3.0"], "id": "32531", "issueType": "Bug", "key": "PDOC-45", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2015-09-10T10:55:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings crashes when documenting puppet's defined.rb", "timeSpent": "PT0S", "updated": "2017-06-19T11:12:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "No longer an issue in strings 0.99.0.", "created": "2016-11-04T13:08:00.000000"}], "components": [], "created": "2015-09-01T16:28:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5bdd275a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1z9j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37139962071_*|*_6_*:*_1_*:*_0"}], "description": "{{code}}\nerror]: Exception occurred while generating 'Puppet4xFunctions.html'\n[error]: ParseErrorWithIssue: Syntax error at '|' at line 1:14\n[error]: Stack trace:\n\t/Users/iankronquist/gg/puppet/lib/puppet/pops/parser/parser_support.rb:123:in `on_error'\n\t/Users/iankronquist/gg/puppet/lib/puppet/pops/parser/lexer2.rb:297:in `scan'\n\t/Users/iankronquist/derpbundle/ruby/1.9.1/gems/racc-1.4.9/lib/racc/parser.rb:150:in `_racc_yyparse_c'\n\t/Users/iankronquist/derpbundle/ruby/1.9.1/gems/racc-1.4.9/lib/racc/parser.rb:150:in `yyparse'\n\t/Users/iankronquist/gg/puppet/lib/puppet/pops/parser/parser_support.rb:236:in `_parse'\n\t/Users/iankronquist/gg/puppet/lib/puppet/pops/parser/parser_support.rb:130:in `parse_string'\n\n{{code}}\n\nProbably happens here: \nhttps://github.com/puppetlabs/puppetlabs-strings/blob/2ceead0822d266c93a9f1f0010d3eab08f301ad0/lib/puppet_x/puppetlabs/strings/yard/templates/default/template_helper.rb#L121\n\nThat's the only place I can think of where things in comments are parsed as puppet code.\n\nSolution if my theory is true:\n1. Split types on on '|' before passing to the type parser\n2. Catch this exception and issue a warning. People may put crazy things in those brackets we can't parse.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32558", "fixedVersions": [], "id": "32558", "issueType": "Bug", "key": "PDOC-44", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2016-11-04T13:08:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet strings crashes when documenting Puppet's regsubst.rb", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64] Did you give up on this because you ran into issues? Not sure what exactly the feature was supposed to do, so hard to say how valuable your idea is. We are going to come back and do work on Strings but we have been busy with other things for a while.", "created": "2016-02-19T16:10:00.000000"}, {"author": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "body": "Well the issue is simple:\n\nit was about being able to have formatting in parameters description (bold, links...): \n{code}\n@param foo enables foo *warning: a super warning*\n{code}\n\nI gave up because no progress was made for months and I ran into several issues.", "created": "2016-02-19T16:14:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Ok, were there more formatting than bold? I would like to keep the ticket and modify it to describe the features that are missing. We may adopt your PR even and continue the work. Sorry for the long silence.", "created": "2016-02-19T16:25:00.000000"}, {"author": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "body": "Current we do not allow any formatting. I wanted to write the description in markdown directly.\n\nMy main usecase was links.", "created": "2016-02-19T16:27:00.000000"}], "components": [], "created": "2015-08-31T09:19:00.000000", "creator": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@6b44f0a5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1xbr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "19/Feb/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_179983_*|*_10009_*:*_1_*:*_13476205125_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32557", "fixedVersions": [], "id": "32557", "issueType": "Bug", "key": "PDOC-43", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "resolution": "Won't Fix", "resolutionDate": "2016-02-03T07:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Allow more advanced formatting in parameters descriptions", "timeSpent": "PT0S", "updated": "2016-02-19T16:27:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "body": "wold be a nice way to fix PDOC-43", "created": "2015-09-01T02:53:00.000000"}, {"author": "557058:c5aa36ba-0d5b-4f03-866d-b7c36b853f64", "body": "Maybe the fix for this is PDOC-23", "created": "2015-09-01T02:54:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Looks like this was fixed", "created": "2018-03-05T11:42:00.000000"}], "components": [], "created": "2015-08-27T16:57:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2773f1c6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtnb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_79559126469_*|*_6_*:*_1_*:*_0"}], "description": "They may allow arbitrary injection if you have maliciously formatted code.\n\nConsider the case where Strings documentation is included in PE console or some other web application (this isn't science fiction, this has been mentioned as a future possibility before). Perhaps the people who use the console depend on some module they didn't write and blindly pull down the latest version which contains code which has been maliciously formatted. The code has embedded html or an embedded script. The next time they regenerate the documentation and look at it the script will execute. Maybe this is my imagination running wild, but I bet this could be leveraged into what amounts to a cross site scripting attack. A cross site scripting attack against the console would be really cool and very dangerous.\n\nHere is an example of a maliciously formatted puppet type which runs a short bit of javascript which shows an alert. Run strings on it and visit the documentation page.\n\n{code}\nrequire 'puppet/parameter/package_options'\nrequire 'puppet/parameter/boolean'\n\nPuppet::Type.newtype(:package) do\n    @doc = \"Manage packages.\"\n    newparam(:p) do\n      desc <<-EOT\n        desc\n      EOT\n      defaultto \"<script> alert('hi') </script>\"\n   end\nend\n\n{code}\n\n\nThe mitigation is simple: use an erb template, this is why they exist. They will automatically escape the malicious code for you.\nAlternately, write our own html escaping function and make sure to run it on the non-html parts which we want to include in our output. This sounds like a lot more work and opens the door to somebody forgetting to escape something important.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32354", "fixedVersions": [], "id": "32354", "issueType": "Bug", "key": "PDOC-42", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2018-03-05T11:42:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Make generate_properties and generate_parameters functions into erb templates", "timeSpent": "PT0S", "updated": "2018-03-05T11:42:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c17d4761efb0069ce0954", "created": "2015-09-11T11:54:00.000000", "name": "4xtyped.rb", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12378"}], "comments": [{"author": "623c17d4761efb0069ce0954", "body": "This actually already works. This ticket should have been resolved.\n{code}\niankronquist@puppettop:(test)(master) \u2192 cat 4xtyped.rb \n# @param a [Numeric] comment\n# @param b [String] comment\n# @param s1 [String] comment\n# @param s2 [String] comment\nPuppet::Functions.create_function(:min) do\n  dispatch :min do\n    param 'Numeric', :a\n    param 'Numeric', :b\n  end\n\n  dispatch :min_s do\n    param 'String', :s1\n    param 'String', :s2\n  end\n\n  def min(x,y)\n    x <= y ? x : y\n  end\n\n  def min_s(x,y)\n    cmp = (x.downcase <=> y.downcase)\n    cmp <= 0 ? x : y\n  end\nend\niankronquist@puppettop:(test)(master) \u2192 ppuppet strings 4xtyped.rb \n@param tag types do not match the code. The b parameter is declared as types [\"String\"] in the docstring, but the code specifies the types [\"'Numeric'\", nil] in file 4xtyped.rb near line 5\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         3 (    2 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     0 (    0 undocumented)\n 33.33% documented\n\n{code}", "created": "2015-09-11T11:50:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Cool! I marked as Ready for Test then, so QA can review", "created": "2015-09-11T12:40:00.000000"}, {"author": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "body": "The code changes that make this work appear to have been merged with Ian's PDOC-49 PR.\nI have verified that the type mismatch error is properly reported in the current Master branch of puppetlabs-strings and that the error message is not correct in the currently available version from the forge.\n\nThe module includes a unit test to verify the error message generation.\n\n", "created": "2015-09-15T00:15:00.000000"}], "components": [], "created": "2015-08-18T12:15:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7e6dcf99"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyotdz:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "This was fixed as part of the solution for a previous issue."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2072163463_*|*_3_*:*_1_*:*_2915431_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_300908281"}], "description": "We'd like to have consistent warnings for classes, defined types, and puppet 4x functions. This means that we need to add parameter type checking and warnings for for puppet 4x functions which will involve extracting type information from the AST.", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32563", "fixedVersions": ["PDOC 0.3.0"], "id": "32563", "issueType": "Bug", "key": "PDOC-41", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-09-15T00:15:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add type checking for puppet 4x functions", "timeSpent": "PT0S", "updated": "2015-09-16T17:48:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Closing this ticket since it's a duplicate of one that was already opened", "created": "2015-08-18T11:13:00.000000"}], "components": [], "created": "2015-08-18T11:10:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4c38d6b3"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz1pon:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_196855_*|*_6_*:*_1_*:*_0"}], "description": "YARD is giving duplicate warnings for puppet 4x functions when there is a parameter that is documented that is not present in the source code. Ideally we'd like to only see one warning, and have warnings that are consistent with the format we see from classes and defined types as well.", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32454", "fixedVersions": ["PDOC 0.3.0"], "id": "32454", "issueType": "Bug", "key": "PDOC-40", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Duplicate", "resolutionDate": "2015-08-18T11:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Fix parameter missing warnings for 4x functions", "timeSpent": "PT0S", "updated": "2015-08-18T11:13:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "623c17d4761efb0069ce0954", "created": "2015-07-10T11:24:00.000000", "name": "lookup_simple2.rb", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12390"}], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Is this fixed by the PR merged for PDOC-38 ?", "created": "2015-09-07T06:34:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "This was not resolved by PDOC-38. I know why this is happening, but no way to fix it leaps to mind.\nMaybe this is actually desired behavior. Maybe those methods deserve their very own docstrings explaining what they do in the context of the puppet function.", "created": "2015-09-08T11:38:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Yes, that is a good way of doing it IMO (each method dispatched to becomes one \"overload\" entry of the one and only function). The entries for the methods dispatched to should be suppressed as their names are of no value (just confusing to a user). Alternatively, the same method (i.e. \"the function name\") appears multiple times (not sure what yard does then).\n\nThe stats are kind of confusing in general, since it requires an understanding of the mapping from ruby code to the puppet domain. Maybe suppress the Modules, Classes, Constants and Methods - since they are in the Ruby domain, and instead output a count for Functions, and Function Signatures. Each named function counts as 1, each dispatch counts as 1 against Function Signatures. (Thus, if all functions are single dispatch, the counts for Functions, and Function Signatures are identical).\n\nTo do this right, there needs to be validation/cross-checking of what is documented and what is actually there (like for parameters). A user may document all signatures in the main body, or may divide it per dispatch, or dispatched to method. Warnings should be issued for duplicated documentation, or for documentation of no longer present signature(s), etc.", "created": "2015-09-08T13:56:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "This is fixed in strings 0.99.0.", "created": "2016-11-04T13:10:00.000000"}], "components": [], "created": "2015-07-10T11:25:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4a4d9769"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0z07:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_41737491929_*|*_6_*:*_1_*:*_0"}], "description": "Yard counts helper methods and dispatch implementations as individual functions which should be documented, even though the whole puppet 4x function has been documented. Consult an example on GitHub[1]. It has also been attached.\n\n[1]: https://github.com/iankronquist/puppet-test-files/blob/master/lookup_simple2.rb\nActual value:\niankronquist@puppettop:(test)(master) \u2192 puppet strings lookup_simple2.rb\n{code}\nFiles:           1                                                       \nModules:         0 (    0 undocumented)                                  \nClasses:         0 (    0 undocumented)                                  \nConstants:       0 (    0 undocumented)                                  \nMethods:         4 (    3 undocumented)                                  \nPuppet Classes:     0 (    0 undocumented)                               \nPuppet Types:     0 (    0 undocumented)                                 \n 25.00% documented        \n{code}\nExpected results:\n{code}\niankronquist@puppettop:(test)(master) \u2192 puppet strings lookup_simple2.rb\nFiles:           1                                                       \nModules:         0 (    0 undocumented)                                  \nClasses:         0 (    0 undocumented)                                  \nConstants:       0 (    0 undocumented)                                  \nMethods:         1 (    0 undocumented)                                  \nPuppet Classes:     0 (    0 undocumented)                               \nPuppet Types:     0 (    0 undocumented)                                 \n 100.00% documented              \n{code}                                               \n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32429", "fixedVersions": [], "id": "32429", "issueType": "Bug", "key": "PDOC-39", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2016-11-04T13:10:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Stats misleading/meaningless for puppet 4x functions", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Merged to master at: d6c8bc5", "created": "2015-09-07T06:29:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "hasn't made it into an agent build yet", "created": "2015-09-16T13:05:00.000000"}, {"author": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "body": "[~accountid:623cffe88d8b9c0068b93ebf]  I tested this, using the same test.rb text in the description and found that it is still producing the same incorrect output (indicating 2 methods documented, when there is only one).  I installed from source using the master branch.  I don't see a merge.  ", "created": "2015-09-21T17:24:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I thought the solution was to redirect the yard output to a file so that only things related to strings appeared. I am not sure though. There is also PDOC-39 which seems very similar to this.\n", "created": "2015-09-21T17:49:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "[~accountid:557058:8872d0b6-d198-4e25-92ad-02776be82d59] The commit d6c8bc5 was noted as merged, it may be part of another ticket? The stats are really not very meaningful in a puppet context (as noted in PDOC-39) and the best would be if they did not show at all and that we only showed puppet related stats.", "created": "2015-09-21T17:52:00.000000"}, {"author": "557058:8872d0b6-d198-4e25-92ad-02776be82d59", "body": "\n\n1. This bug is about duplicate warnings seen when a parameter is documented, but not used in the function, not so much that the reported counts are not useful.  There is another ticket for that problem, PDOC-39 (Stats misleading/meaningless for puppet 4x functions).\n\n2. I verified that the version 0.2.0 of strings did produce a duplicate warning and that version 0.3.0 does not.\n\nHere is the file with the documented function, test.rb:\n\n{code}\n[root@xolaci1xwx4kkv0 ~]# cat test.rb\n# When given two numbers, returns the one that is larger.\n# You could have a several line description here if you wanted,\n# but I don't have much to say about this function.\n#\n# @example using two integers\n#   $bigger_int = max(int_one, int_two)\n#\n# @return [Integer] the larger of the two parameters\n#\n# @param not_used [Integer] the first number to be compared\nPuppet::Functions.create_function(:max) do\n  def max(num_a, num_b)\n    num_a >= num_b ? num_a : num_b\n  end\nend\n{code}\n\nversion 0.2.0 result:\n\n{code}\n[root@xolaci1xwx4kkv0 ~]# puppet strings test.rb\n[warn]: @param tag has unknown parameter name: not_used\n    in file `test.rb' near line 11\n[warn]: @param tag has unknown parameter name: not_used\n    in file `test.rb' near line 11\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         2 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\n 100.00% documented\ntrue\n[root@xolaci1xwx4kkv0 ~]#\n{code}\n\n\nversion 0.3.0 result:\n{code}\nroot@xolaci1xwx4kkv0 ~]# puppet strings test.rb\n[warn]: The parameter not_used is documented, but doesn't exist in\n    your code, in file test.rb near line 11.\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         2 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     0 (    0 undocumented)\n 100.00% documented\n\n[root@xolaci1xwx4kkv0 ~]#\n{code}", "created": "2015-09-23T17:18:00.000000"}], "components": [], "created": "2015-06-30T16:10:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@753cff21"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoeh3:"}, {"fieldName": "Release Notes", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Not Needed"}, {"fieldName": "Release Notes Summary", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textarea", "value": "Some Puppet related constructs when interpreted by both Yard and Puppet Strings caused problems to be reported twice. Elements were also reported twice in the summary counts reported at the end."}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_280534950_*|*_1_*:*_1_*:*_4313863886_*|*_10007_*:*_1_*:*_1445338589_*|*_3_*:*_1_*:*_167491180_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1140861133"}], "description": "Run strings on this file, called test.rb:\n{noformat}\n# When given two numbers, returns the one that is larger.\n# You could have a several line description here if you wanted,\n# but I don't have much to say about this function.\n#\n# @example using two integers\n#   $bigger_int = max(int_one, int_two)\n#\n# @return [Integer] the larger of the two parameters\n#\n# @param num_c [Integer] the first number to be compared\n# @param num_b [Integer] the second number to be compared\nPuppet::Functions.create_function(:max) do\n  def max(num_a, num_b)\n    num_a >= num_b ? num_a : num_b\n  end\nend\n{noformat}\n\nWhen this file is run, two warnings will be issued for the same mismatched parameter (when only one should be issued) due to the nested nature of puppet functions.", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32594", "fixedVersions": ["PDOC 0.3.0"], "id": "32594", "issueType": "Bug", "key": "PDOC-38", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2015-09-23T17:18:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings Prints Duplicate parameter Warnings Twice For Puppet 4x Functions", "timeSpent": "PT0S", "updated": "2017-06-13T10:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "merged to master at: 2e3821c", "created": "2015-07-13T16:52:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Oops. I validated this a couple of days ago and didn't update the ticket. Specifics are gone but using Hailee's example code, I produced the expected warning.", "created": "2015-07-22T09:57:00.000000"}], "components": [], "created": "2015-06-24T10:54:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@258202ad"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "module authors"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "attempting document a missing/typo'd parameter name"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyongf:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_3_*:*_82805178_*|*_1_*:*_1_*:*_16882349_*|*_10007_*:*_6_*:*_538354719_*|*_3_*:*_4_*:*_1084446599_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_2_*:*_693244920"}], "description": "Make sure YARD will now issue a warning if the name of the parameter you documented does not match an existing parameter in the source code. For example when parsing:\n\n{noformat}# @param not_a_param [Integer] the first number to be compared\n# @param also_not_a_param [Integer] the second number to be compared\nPuppet::Functions.create_function(:max) do\n  def max(num_a, num_b)\n    num_a >= num_b ? num_a : num_b\n  end\nend{noformat}\n\nstrings will produce the following warnings:\n{noformat}[warn]: @param tag has unknown parameter name: not_a_param\n    in file `(stdin)' near line 3\n[warn]: @param tag has unknown parameter name: also_not_a_param\n    in file `(stdin)' near line 3{noformat}\n\nThis is true for classes, defined types, and puppet 4x functions. The way parameters work for puppet 3x functions is a little different, so warnings like this do not make sense.", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32507", "fixedVersions": [], "id": "32507", "issueType": "Bug", "key": "PDOC-37", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-07-22T09:57:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Warn when documented parameter name does not match source code", "timeSpent": "PT0S", "updated": "2015-07-22T09:57:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "This is still an issue as of strings 0.99.0. The 'setup' link in the table of contents leads to the URL file:///blah/puppetlabs-apache/doc/index.html#setup but the actual anchor is file:///blah/puppetlabs-apache/doc/index.html#label-Setup.\n\nI believe this is a bug in YARD itself, so I wrote up https://github.com/lsegal/yard/issues/1032.", "created": "2016-11-03T14:14:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "Turns out this could be a redcarpet bug. Perhaps we should evaluate some other markdown handlers (e.g. https://rubygems.org/gems/commonmarker)", "created": "2018-01-25T14:22:00.000000"}], "components": [], "created": "2015-06-23T12:00:00.000000", "creator": "623c17d4761efb0069ce0954", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@37a19453"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-183"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hykt7j:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Modules"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_43121658741_*|*_10007_*:*_1_*:*_409675973_*|*_3_*:*_1_*:*_4872577_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_43549848667_*|*_10005_*:*_1_*:*_2876"}], "description": "Issue:\n\nSteps to reproduce:\nInstall some module, let's choose apache:\n{noformat}\n$ puppet module install puppetlabs-apache && cd apache\n{noformat}\nRun strings:\n{noformat}\n$ puppet strings\n{noformat}\nOpen the file doc/index.html with your favorite browser. Click on the first link in the table of contents, \"Overview - What is the apache module?\". Observe that nothing happens. The URL should be something like:\n{noformat}\nfile:///.../etc/code/modules/apache/doc/index.html#overview\n{noformat}\n\nTo see the expected behavior, change the URL to:\n{noformat}\nfile:///.../etc/code/modules/apache/doc/index.html#Overview\n{noformat}\nThat's a capital O in overview.\n\nTo fix:\nadd an id to the Overview h2 element. This may be a bug in yard.\nNote that the links in \"Class list\" work.", "epicLinkSummary": "Puppet Strings 2.0.0", "estimate": "PT0S", "externalId": "32419", "fixedVersions": [], "id": "32419", "issueType": "Bug", "key": "PDOC-36", "labels": [], "originalEstimate": "PT0S", "parent": "32609", "parentSummary": "Puppet Strings 2.0.0", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623c17d4761efb0069ce0954", "resolution": "Fixed", "resolutionDate": "2018-03-27T10:34:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Generated document internal links don't always work", "timeSpent": "PT0S", "updated": "2018-03-27T10:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c14e0b75ca8007056d418", "body": "Validated on redhat-6-x86_64 with puppet-strings SHA: 782fee5d0be9585aa58e5c3d69377f9ca2726a11\n\n{code}\n1) Clone puppet-strings to local machine\ngit clone https://github.com/puppetlabs/puppetlabs-strings.git\n2) Build and install puppet-strings\n[root@x7dmn8uep2jaty0 ~]# cd puppetlabs-strings/\n[root@x7dmn8uep2jaty0 puppetlabs-strings]# puppet module build\nNotice: Building /root/puppetlabs-strings for release\nModule built: /root/puppetlabs-strings/pkg/puppetlabs-strings-0.2.0.tar.gz\n[root@x7dmn8uep2jaty0 puppetlabs-strings]# puppet module install /root/puppetlabs-strings/pkg/puppetlabs-strings-0.2.0.tar.gz\nNotice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...\nNotice: Downloading from https://forgeapi.puppetlabs.com ...\nNotice: Installing -- do not interrupt ...\n/etc/puppetlabs/code/environments/production/modules\n\u2514\u2500\u2500 puppetlabs-strings (v0.2.0)\n\n3) Install yard\n[root@x7dmn8uep2jaty0 puppetlabs-strings]# puppet resource package yard provider=puppet_gem\nNotice: /Package[yard]/ensure: created\npackage { 'yard':\n  ensure => ['0.8.7.6'],\n}\n\n4) Create Types and Providers\n[root@x7dmn8uep2jaty0 foo]# pwd\n/etc/puppetlabs/code/environments/production/modules/foo\n[root@x7dmn8uep2jaty0 foo]# tree\n.\n\u2514\u2500\u2500 lib\n    \u2514\u2500\u2500 puppet\n        \u251c\u2500\u2500 provider\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 book\n        \u2502\u00a0\u00a0     \u2514\u2500\u2500 amazon.rb\n        \u2514\u2500\u2500 type\n            \u2514\u2500\u2500 book.rb\n[root@x7dmn8uep2jaty0 foo]# cat lib/puppet/type/book.rb\nPuppet::Type.newtype(:book) do\n    @doc = \"Get a book from somewhere\"\n    feature :draw, \"The ability to draw.\"\n\n    ensurable\n\n    newparam(:name) do\n      isnamevar\n        desc \"The name of the book\"\n    end\n    newparam(:color) do\n      desc \"Your color\"\n      newvalues(:red, :green, :blue, :purple)\n    end\n\n    newproperty(:enable) do\n      newvalue(:true)\n      newvalue(:false)\n    end\n    newproperty(:covertype) do\n      desc \"Specify hardcover or paperback\"\n      defaultto \"paperback\"\n    end\nend\n\n[root@x7dmn8uep2jaty0 foo]# cat lib/puppet/provider/book/amazon.rb\nPuppet::Type.type(:book).provide(:amazon, :parent => Puppet::Provider) do\n    desc \"Buy from Amazon\"\n    mk_resource_methods\n\n    confine     :operatingsystem => :RedHat\n    defaultfor  :operatingsystem => :RedHat\n    has_feature :draw\n    commands    :echo => \"/bin/echo\"\n\n    def initialize(value={})\n        super(value)\n        @property_flush = {}\n    end\n\n    def create\n        @property_flush[:ensure] = :present\n    end\n    def destroy\n         @property_flush[:ensure] = :absent\n    end\n    def exists?\n        @property_hash[:ensure] == :present\n    end\n    def self.instances\n       puts ( \"checking instances\")\n       instances = []\n       instances << new(:name => 'Alchemist', :ensure => 'present', :covertype => 'Hardcover')\n       instances\n    end\nend\n\n[root@x7dmn8uep2jaty0 foo]# puppet resource book\nchecking instances\nbook { 'Alchemist':\n  ensure => 'absent',\n\n5) Run puppet strings from module root\n[root@x7dmn8uep2jaty0 foo]# puppet strings\nFiles:           2\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     1 (    0 undocumented)\nPuppet Providers:     1 (    0 undocumented)\n 100.00% documented\n}\n\n[root@x7dmn8uep2jaty0 foo]# cat doc/book.html\n\n...\n  <h1>\n    Puppet Type: book\n  </h1>\n</div>\n\n<dl class=\"box\">\n    <dt class=\"r1 last\">Defined in:</dt>\n    <dd class=\"r1 last\">lib/puppet/type/book.rb</dd>\n\n</dl>\n<div class=\"clear\"></div>\n\n<h2>Overview</h2><div class=\"docstring\">\n  <div class=\"discussion\">\n    <p>\n<p>Get a book from somewhere</p>\n</p>\n  </div>\n</div>\n<div class=\"tags\">\n</div>\n<h2>Parameter Summary</h2>\n<div class=\"tags\">\n  <ul class=\"param\">\n    <li><span class=\"name\">name </span><span class=\"type\">(Parameter) (Namevar) </span> - <div class=\"inline\"><p>\n<p>The name of the book</p>\n </p></div></li><li><span class=\"name\">color </span><span class=\"type\">(Parameter) </span> - <div class=\"inline\"><p>\n<p>Your color</p>\n </p></div><b> Allowed Values: </b><ul><li><tt>:red</tt></li><li><tt>:green</tt></li><li><tt>:blue</tt></li><li><tt>:purple</tt></li></ul></li><li><span class=\"name\">covertype </span><span class=\"type\">(Property)  Default value: <tt>\"paperback\"</tt> </span> - <div class=\"inline\"><p>\n<p>Specify hardcover or paperback</p>\n </p></div></li><li><span class=\"name\">enable </span><span class=\"type\">(Property) </span><b> Allowed Values: </b><ul><li><tt>:true</tt></li><li><tt>:false</tt></li></ul></li>\n  </ul>\n</div>\n<h2>Features</h2>\n<div class=\"tags\">\n  <ul class=\"feature\">\n    <li><span class=\"name\">draw </span>- <br/><div class=\"inline\"><p> The ability to draw. </p></div></li><li><span class=\"name\">draw </span>- <br/><div class=\"inline\"><p> The ability to draw. </p></div></li>\n  </ul>\n</div>\n<h2>Available Providers</h2>\n\n<div class=\"tags\">\n  <ul class=\"command\">\n\n      <li><a href=\"amazon.html\"><tt>amazon</tt></a></li>\n\n  </ul>\n</div>\n\n</div>\n\n[root@x7dmn8uep2jaty0 foo]# cat doc/amazon.html\n...\n</div>\n      <div class=\"clear\"></div>\n    </div>\n\n    <iframe id=\"search_frame\"></iframe>\n\n    <div id=\"content\"><div class='module_header'>\n  <h1>\n    Puppet Provider: amazon\n  </h1>\n</div>\n\n<dl class=\"box\">\n    <dt class=\"r1 last\">Defined in:</dt>\n    <dd class=\"r1 last\">lib/puppet/provider/book/amazon.rb</dd>\n\n</dl>\n<div class=\"clear\"></div>\n\n<h2>Overview</h2><div class=\"docstring\">\n  <div class=\"discussion\">\n    <p>\n<p>Buy from Amazon</p>\n</p>\n  </div>\n</div>\n<div class=\"tags\">\n\n\n\n</div>\n<h2>Commands Summary</h2>\n<div class=\"tags\">\n  <ul class=\"command\">\n\n         <li><tt>echo</tt></li>\n\n  </ul>\n</div>\n<h2>Confines</h2>\n\n<div class=\"tags\">\n  <ul class=\"command\">\n\n         <li><tt>operatingsystem - :RedHat</tt></li>\n\n  </ul>\n</div>\n\n<h2>Defaults</h2>\n\n<div class=\"tags\">\n  <ul class=\"command\">\n        <li><tt>operatingsystem - :RedHat</tt></li>\n\n  </ul>\n</div>\n\n<h2>Features</h2>\n\n<div class=\"tags\">\n  <ul class=\"command\">\n\n         <li><tt>:draw</tt></li>\n\n  </ul>\n</div>\n\n</div>\n\n[root@x7dmn8uep2jaty0 foo]# cat doc/puppet_type_list.html\n...\n      <ul id=\"full_list\" class=\"class\">\n        <li><span class='object_link'><a href=\"book.html\" title=\"book (type)\">book</a></span><small class='search_info'>Top Level Namespace</small></li>\n      </ul>\n\n[root@x7dmn8uep2jaty0 foo]# cat doc/puppet_provider_list.html\n      <ul id=\"full_list\" class=\"class\">\n        <li><span class='object_link'><a href=\"amazon.html\" title=\"amazon (provider)\">amazon</a></span><small class='search_info'>Top Level Namespace</small></li>\n      </ul>\n{code}\n\n[~accountid:623c17d4761efb0069ce0954]\nJust a trivial thing. Looks like one line break is missing from the type's output html between the property and the allowed values for parameter. Rest all looks great.", "created": "2015-09-14T12:49:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "[~accountid:623c17d4761efb0069ce0954] pointed out that I missed one of the feature, the special directive `@!puppet.type.param`'in my previous testing. Found some issues with the special directive and logged PDOC-52 and PDOC-53 to track them. \n\nThis ticket can be resolved after merging the new line fix (mentioned in the previous comment) and puppet-strings README fix to change the special directive text from `@!puppet.provider.param` to '`@!puppet.type.param` in the \"### Types and Providers\"  section\n", "created": "2015-09-14T17:21:00.000000"}], "components": [], "created": "2015-06-22T15:21:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7611ec58"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyoegv:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "Bandwidth"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "5.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_59410369_*|*_1_*:*_1_*:*_3371770640_*|*_10007_*:*_2_*:*_2444735621_*|*_3_*:*_2_*:*_1013700656_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_615471350_*|*_10006_*:*_1_*:*_26769"}], "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32428", "fixedVersions": ["PDOC 0.3.0"], "id": "32428", "issueType": "New Feature", "key": "PDOC-35", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-09-17T12:06:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Support Types and Providers", "timeSpent": "PT0S", "updated": "2015-09-17T12:06:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "What's the ETA for this release?  If I put this in the book, will Strings 0.3.0 be out before the book? (3-4 weeks minimum)", "created": "2015-09-18T00:11:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "The ETA of this release is next Tuesday the 22nd. If a disaster arises (hardly likely), the release will be delayed until the 29th.", "created": "2015-09-18T16:26:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Jira hygiene. Closing. All tickets are resolved.", "created": "2016-06-11T08:22:00.000000"}], "components": [], "created": "2015-06-19T16:58:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@64b1ce98"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-3"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Strings 0.3.0"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "yellow"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz0lbj:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "18/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_30900298697_*|*_6_*:*_2_*:*_7010"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32593", "fixedVersions": [], "id": "32593", "issueType": "Epic", "key": "PDOC-34", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-06-11T08:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings 0.3.0 Release ", "timeSpent": "PT0S", "updated": "2016-06-22T17:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c17d4761efb0069ce0954", "body": "The easiest cross platform way to do this is actually to just use puppet.", "created": "2015-07-29T13:50:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "Most people don't manage their personal PCs or Macbooks on which they do development with Puppet. As you can't use \"puppet doc\" without yard, and as it won't use the yard gem in your normal gemfile people are confused. They report puppet doc as broken.\n\nThe answer is simply \"/opt/puppetlabs/puppet/bin/gem install yard\" but you need to put this somewhere people can find it. This is not intuitive.", "created": "2015-07-29T14:42:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "Documentation update, resolving.", "created": "2015-07-30T14:01:00.000000"}], "components": [], "created": "2015-05-17T16:11:00.000000", "creator": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@52a2e05"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyol9z:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_78504063_*|*_1_*:*_1_*:*_6121364586_*|*_10007_*:*_1_*:*_104814258_*|*_3_*:*_1_*:*_74233613_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_7009318"}], "description": "{{gem install yard}} won't work on a Puppet 4 system. Document the appropriate way to install the yard gem for use as a puppet face in Puppet 4.\n\nDescribe installation process for *nix Puppet 4 and Windows.", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32576", "fixedVersions": [], "id": "32576", "issueType": "Improvement", "key": "PDOC-33", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "resolution": "Fixed", "resolutionDate": "2015-07-30T14:03:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "documentation doesn't inform reader how to install yard gem in Puppet 4", "timeSpent": "PT0S", "updated": "2015-07-30T14:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623e7728761efb0069cf4730", "body": "[~accountid:557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c]  Is this still active?", "created": "2015-09-24T15:00:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Jira hygiene. Closing. Only ticket in the epic is closed and this doesn't represent planned work.", "created": "2016-06-11T08:22:00.000000"}], "components": [], "created": "2015-03-31T17:49:00.000000", "creator": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "customFieldValues": [{"fieldName": "Scrum Team/s", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect", "value": "Language"}, {"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@65eece45"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-5"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet-strings 1.0 completers"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_teal"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyqhjb:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "24/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_37809146332_*|*_6_*:*_1_*:*_0"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32504", "fixedVersions": [], "id": "32504", "issueType": "Epic", "key": "PDOC-32", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:f1e252bd-73da-4e0e-90f7-f0aefb98d28c", "resolution": "Fixed", "resolutionDate": "2016-06-11T08:22:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "puppet-strings 1.0 completers", "timeSpent": "PT0S", "updated": "2016-06-11T08:22:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "This is simply not possible with a reasonable fidelity since it requires evaluating the code to produce a catalog and this is not something that the static documentation tooling provides. The result will differ based on node, ENC, etc.\n\nThe Geppetto IDE helps you with issues like these", "created": "2015-04-14T11:34:00.000000"}], "components": [], "created": "2015-03-17T10:23:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1c277ba5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyywjz:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_2423496927_*|*_6_*:*_1_*:*_0"}], "description": "After digging through some heavy uses of the Roles and Profiles Pattern, I've realized that I would really like it if something could tell me what classes were including other classes as well as what classes are included by other classes.\n\nThis could make it a LOT easier to track down where to override variables, etc... over time.\n\nIt wouldn't have to be perfect, just correct for all instances of 'include' and 'class' in the code. I.e. I don't care if it's in an 'if' statement, I just care that it's there.", "environment": "Any", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32418", "fixedVersions": [], "id": "32418", "issueType": "Improvement", "key": "PDOC-31", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Won't Fix", "resolutionDate": "2015-04-14T11:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet Strings should tell me what classes include other classes and what classes are included by other classes.", "timeSpent": "PT0S", "updated": "2015-04-14T11:34:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Thanks for reporting this issue!\n\nJust curious, do you see this also when running against the 0.1.1 release on the Forge? Trying to determine if this was a bug I introduced, since I recently did a bunch of work around the HTML generation, or one that already existed.", "created": "2015-03-12T10:53:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Just kidding, I was able to reproduce it in both places. Let me look into this a little more can get back to you. Thanks again for reporting.", "created": "2015-03-12T11:14:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "It looks like there are more issues with parsing markdown lists. I'm trying to determine the scope.\nIn short, markdown like this:\n{code}\n# This is markdown\n#\n# * a list\n# * b list\n# * c list\n# * d list\n#\n{code}\nRenders like this:\n{code}\n</h3><div class=\"docstring\">\n  <div class=\"discussion\">\n    <p>This is markdown</p>\n\n<p>* a list\n* b list\n* c list\n* d list</p>\n{code}\n\nrelevant portion of the markdown \"spec\": http://daringfireball.net/projects/markdown/syntax#list", "created": "2015-06-24T10:35:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Hmmmm... I am not sure what changed but I don't seem to be able to reproduce this anymore. Here's the HTML I'm seeing now:\n\n{code:html}<h2>Overview</h2><div class=\"docstring\">\n<div class=\"discussion\">\n<p>\n<p>Paragraph.</p>\n<ul><li>\n<p>List entry</p>\n</li><li>\n<p>And another list entry</p>\n</li></ul>\n\n<p>Heading (or anything really)</p>\n<hr>\n</p>\n</div>\n</div>{code}\n\nThe list seems to be getting closed off as expected now. This is running with the most recent commit on master: (SHA: 2e3821c2af4a833eb08586ff8948c7a8c951f093). I'm not sure what changed... but I'm not seeing the issue anymore.\n\n[~accountid:557058:54921db7-0271-4f8f-be78-bf68cccb06d2], would you mind seeing if this is still an issue on your end?", "created": "2015-07-15T12:25:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Whoops, my bad. I did not have my .yardopts file when I ran that. The issue appears when I add in the --markup markdown option", "created": "2015-07-15T12:27:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "Validated on SHA:abf3b786c5c3c9ec0190a767af6abde5b76bf695\n\nSteps to reproduce:\n{code}\n1) Install yard \n$/opt/puppetlabs/puppet/bin/gem install yard\n\n2) Install puppet-strings module\n$git clone https://github.com/puppetlabs/puppetlabs-strings.git\n\n$cd /root/puppetlabs-strings\n[root@ey7vzwhgll49tjt puppetlabs-strings]# puppet module build\nNotice: Building /root/puppetlabs-strings for release\nModule built: /root/puppetlabs-strings/pkg/puppetlabs-strings-0.2.0.tar.gz\n\n[root@ey7vzwhgll49tjt puppetlabs-strings]# puppet module install /root/puppetlabs-strings/pkg/puppetlabs-strings-0.2.0.tar.gz\nNotice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...\nNotice: Downloading from https://forgeapi.puppetlabs.com ...\nNotice: Installing -- do not interrupt ...\n/etc/puppetlabs/code/environments/production/modules\n\u2514\u2500\u2500 puppetlabs-strings (v0.2.0)\n\n3) Create .yardopts file in the module's root directory\n[root@ey7vzwhgll49tjt test]# cat /etc/puppetlabs/code/modules/test/.yardopts\n--markup markdown\n\n4) Run puppet strings\n[root@ey7vzwhgll49tjt test]# pwd\n/etc/puppetlabs/code/modules/test\n\n[root@ey7vzwhgll49tjt test]# puppet strings\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     1 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\n 100.00% documented\ntrue\n\n[root@ey7vzwhgll49tjt modules]# cat /etc/puppetlabs/code/modules/test/manifests/test.pp\n# Paragraph.\n#\n# * List entry\n#\n# Heading (or anything really)\n# ---\nclass test {\n  notify{'hello':}\n}\n\n\n# cat /etc/puppetlabs/code/modules/test/doc/test.html\n==\n<h2>Overview</h2><div class=\"docstring\">\n  <div class=\"discussion\">\n    <p>\n<p>Paragraph.</p>\n<ul><li>\n<p>List entry</p>\n</li></ul>\n\n<h2 id=\"label-Heading+%28or+anything+really%29\">Heading (or anything really)</h2>\n</p>\n  </div>\n</div>\n<div class=\"tags\">\n\n\n==\n{code}\n\nFor the following input corresponding output was created.\n{code}\n\n[root@ey7vzwhgll49tjt modules]# cat /etc/puppetlabs/code/modules/test/manifests/test.pp\n# This is markdown\n#\n# * a list\n# * b list\n# * c list\n# * d list\nclass test {\n   notify {'hello':}\n}\n\n\n# cat /etc/puppetlabs/code/modules/test/doc/test.html\n===\n<h2>Overview</h2><div class=\"docstring\">\n  <div class=\"discussion\">\n    <p>\n<p>This is markdown</p>\n<ul><li>\n<p>a list</p>\n</li><li>\n<p>b list</p>\n</li><li>\n<p>c list</p>\n</li><li>\n<p>d list</p>\n</li></ul>\n</p>\n  </div>\n</div>\n===\n{code}", "created": "2015-07-27T12:54:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "This issue is marked Resolved however I see no patch, and the problem is still evident. The headers as generated by the skeleton today appear as text appended to the previous paragraph.", "created": "2015-09-07T20:52:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "[~accountid:557058:c5ea6c35-c500-4334-8131-e031af9f81a4] are you testing against the most recent SHA on the master branch? Here is the patch that we believed fixed the issue:\n\nhttps://github.com/puppetlabs/puppetlabs-strings/commit/6137e94a25d18a48298c0130724441c83d9649e7\n\nBut if you're still seeing the problem with a version of strings that includes that patch then it sounds like we have some investigation to do.", "created": "2015-09-08T10:28:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "Ah no. According to what I read in this issue, someone was testing with 0.2.0 which is the version I'm using. I'll pull down master tonight and compare.\n\nNote: I've been using ##markdown headers instead and they work fine with the option enabled in {{.yardopts}}. I was referring to bone-stock skeleton with bone-stock strings and setext headers.", "created": "2015-09-08T12:54:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "Sorry, [~accountid:623cffe88d8b9c0068b93ebf] I dropped the ball on this. I have cloned from master as of tonight, and did see and appreciate the type checking from PDOC-21 ", "created": "2015-09-18T00:25:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "[~accountid:557058:c5ea6c35-c500-4334-8131-e031af9f81a4] I believe that markdown is enabled in .yardopts on puppet's master branch.\nhttps://github.com/puppetlabs/puppet/blob/master/lib/puppet/module_tool/skeleton/templates/generator/.yardopts#L1\n\nAs for the header formats, I just used what I was most familiar with when I updated the module skeleton. If you think that it would be better to be consistent with the skeleton's README, feel free to submit a PR.", "created": "2015-09-18T15:08:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "Would love to know when {{.yardopts}} is going to hit a release. It's tagged for 4.2.1 but it's not in 4.2.2...", "created": "2015-09-18T17:33:00.000000"}], "components": [], "created": "2015-03-06T05:57:00.000000", "creator": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7fab553b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "pdoc"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "eats some of the doc"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyolaf:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "More work for Ian"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "12/Mar/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_55256334_*|*_1_*:*_1_*:*_3385907655_*|*_10007_*:*_1_*:*_358702184_*|*_3_*:*_1_*:*_73701272_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_531425518_*|*_10005_*:*_1_*:*_7971637286"}], "description": "If I have this doc at the top and run with {{--markup markdown}} in my {{.yardopts}} (as recommended by the readme):\n\n{noformat}\n# Paragraph.\n#\n# * List entry\n#\n# Heading (or anything really)\n# ---\n{noformat}\n\nThe resulting HTML looks like this\n\n{code:html}\n<div class=\"discussion\">\n<p>\n<p>Paragraph.</p>\n\n<ul>\n<li>List entry\nHeading (or anything really)\n---</li>\n</ul>\n</p>\n</div>\n{code}\n\nIgnoring the {{p}} tag encompassing the whole thing, the heading has been subsumed into the preceding list item. \n\nTested on latest commit (93e584524df6). Running the same content (without the # comments) through Redcarpet works fine, so maybe caused by some custom preprocessing.", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32452", "fixedVersions": [], "id": "32452", "issueType": "Bug", "key": "PDOC-30", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "resolution": "Fixed", "resolutionDate": "2015-07-27T12:54:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Markdown list item absorbs content after it", "timeSpent": "PT0S", "updated": "2015-09-18T17:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2015-03-04T14:15:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@2d0ab68f"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3k7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_8422_*|*_3_*:*_1_*:*_364890263_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_765409728"}], "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32360", "fixedVersions": ["PDOC 0.2.0"], "id": "32360", "issueType": "Task", "key": "PDOC-29", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-03-17T17:14:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Release Strings 0.2.0", "timeSpent": "PT0S", "updated": "2015-03-19T16:25:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Thanks for filing this ticket! I think releasing strings as a gem would be pretty simple, but I need to look into a little more.\n\nIf it's not too difficult I think this is something we would like to do, I'm just not sure exactly when. I'll update this ticket as decisions are made.", "created": "2015-02-23T15:08:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "Wanted to come in and vote for this.\n\n1) I don't want strings installed on my servers\n2) It's a pain in the rear to try to munge around this to get something that works at the command line\n3) Why does this need to be a face? Seems like overkill for a documentation processor", "created": "2015-07-07T10:52:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "{quote}\nIt also strikes me that puppet modules should not be (ab)used for exposing new puppet features that are unrelated to the catalog.\n{quote}\n\n[~accountid:557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576] interesting ... can you explain your philosophy more? there are tons of modules that install things like report processors", "created": "2015-07-13T15:44:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:623c0a337910a200718b9059] So, it may be that I'm doing something horribly, horribly, wrong, but let's suppose you're developing on two different systems, one RHEL7 and one RHEL6. Let's also suppose that you need to test everything against Ruby 1.9, 2.0, 2.1, 2.2, 1.8 and Puppet 2.7, 3.7, 4.X, whatever.... And therefore, you're using something like RVM.\n\nRight now, as far as I can tell, I have to actually load the puppet command line utility to run strings.\n\nThis gets *massively* irritating when I can't just run 'bundle' and have a command (puppet-strings?) at my fingertips. Instead, it seems that I have to figure out my module path, figure out where I stuck whatever version of Puppet this version of Strings is compatible with, get all that loaded into my path and then run '~/some/massively/long/path/to/puppet strings --modulepath=~/something/else/long/and/irritating/modules' and hope that I got everything right (which I usually don't due to multiple versions of Ruby, gemsets, conflicting versions of Puppet, whatever).\n\nIf there's some easier way to do this that doesn't involve the use of the Internet (I like building everything on my laptop on planes) ", "created": "2015-07-13T16:02:00.000000"}, {"author": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "body": "I've noticed this was in testing. So I kindly did.\n\nI ran into a crash trying to use the Rake tasks:\n\n\n{code:shell}\n$ bundle exec rake strings:generate\n/home/jan/.gem/ruby/2.0.0/gems/yard-0.8.7.6/lib/yard/code_objects/base.rb:50: warning: already initialized constant YARD::CodeObjects::CONSTANTMATCH\n/home/jan/Src/puppet-strings/lib/puppet_x/puppetlabs/strings/yard/core_ext/yard.rb:10: warning: previous definition of CONSTANTMATCH was here\nrake aborted!\nNoMethodError: undefined method `each' for nil:NilClass\n/home/jan/.gem/ruby/2.0.0/gems/yard-0.8.7.6/lib/yard/core_ext/symbol_hash.rb:65:in `update'\n/home/jan/.gem/ruby/2.0.0/gems/yard-0.8.7.6/lib/yard/core_ext/symbol_hash.rb:72:in `merge'\n/home/jan/Src/puppet-strings/lib/puppet_x/puppetlabs/strings/util.rb:18:in `generate'\n/home/jan/Src/puppet-strings/lib/puppet-strings/rake_tasks.rb:9:in `block (2 levels) in <top (required)>'\nTasks: TOP => strings:generate\n{code}", "created": "2016-02-01T12:22:00.000000"}, {"author": "557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920", "body": "Thanks for trying it out [~accountid:557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576]! I just tried to reproduce that with master of puppetlabs-strings (678ba735e8d62ff59339b04644fc335ba20799e8)", "created": "2016-03-01T14:19:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "[~accountid:557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576] How large is the codebase that you're trying to run on? I didn't have any issues running, but you may be having weird issues on large codebases per PDOC-71. You may also be having issues depending on what version of Puppet you're using per PDOC-72. I'm not sure if there are any other breaking combinations.", "created": "2016-03-01T14:26:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "I also tested building and running the gem and didn't encounter any issues, so I suspect the issue you're seeing [~accountid:557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576] is an issue with strings in general and not the gem specifically, so I'm going to resolve this ticket. However, if you'd like to provide some more details about your setup, what module you're running against, etc I'd be happy to see if I can trouble shoot the problem. It may be an existing issue or one that we need to file a new ticket for.\n\nThanks for your help!", "created": "2016-03-14T17:55:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Thanks [~accountid:623cffe88d8b9c0068b93ebf] for bringing this to completion!", "created": "2016-03-15T10:32:00.000000"}], "components": [], "created": "2015-02-17T23:56:00.000000", "creator": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@72158ab5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4yev:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "23/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_3037203370_*|*_1_*:*_1_*:*_486728187_*|*_10007_*:*_1_*:*_616688160_*|*_5_*:*_1_*:*_1401126178_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_10721587460_*|*_10006_*:*_1_*:*_18894890238"}], "description": "Document generation is done on our build server and having this puppet face available as a gem would make administration a whole lot easier. \n\nIt also strikes me that puppet modules should not be (ab)used for exposing new puppet features that are unrelated to the catalog.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32592", "fixedVersions": ["PDOC 0.4.0"], "id": "32592", "issueType": "Improvement", "key": "PDOC-28", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:49ceab3c-ff4b-4621-bdcc-c10cbd1c1576", "resolution": "Fixed", "resolutionDate": "2016-03-14T17:55:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Make puppet strings available as a gem", "timeSpent": "PT0S", "updated": "2016-10-06T14:14:00.000000", "votes": "2", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "[adding context]\nWhile verifying PDOC-26, which was filed as a result of PDOC-24, we came across this bug, which pre-dates Puppet strings. The specific failure occurred at SHA=d9d5ae6, but this bug predates Puppet strings, so that may not matter.\n\n{code}\n# threex.rb\nmodule Puppet::Parser::Functions\n  newfunction(:threex) do |args|\n    filename = args[0]\n    str = args[1]\n    File.open(filename, 'a') {|fd| fd.puts str }\n  end\nend\n\n# puppet strings threex.rb\n[error]: Unhandled exception in PuppetX::PuppetLabs::Strings::YARD::Handlers::Puppet3xFunctionHandler:\n[error]:   in `threex.rb`:5:\n\n\t5: newfunction(:threex) do |args|\n\n[error]: NoMethodError: undefined method `map' for nil:NilClass\n[error]: Stack trace:\n\t/etc/puppet/environments/production/modules/puppetlabs-strings/lib/puppet_x/puppetlabs/strings/yard/handlers/puppet_3x_function_handler.rb:69:in `process_parameters'\n\t/etc/puppet/environments/production/modules/puppetlabs-strings/lib/puppet_x/puppetlabs/strings/yard/handlers/puppet_3x_function_handler.rb:7:in `block in <class:Puppet3xFunctionHandler>'\n\t/var/lib/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:114:in `block (2 levels) in process'\n\t/var/lib/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:112:in `each'\n\t/var/lib/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:112:in `block in process'\n\t/var/lib/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:111:in `each'\n\nFiles:           1\nModules:         1 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\n 100.00% documented\ntrue\n\n# puppet apply -e 'threex(\"/tmp/foo\", \"bar\")\nNotice: Compiled catalog for ubuntu.corp.puppetlabs.net in environment production in 0.01 seconds\nNotice: Finished catalog run in 0.01 seconds\n# cat /tmp/foo\nbar\n{code}\n", "created": "2015-02-10T21:06:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "A note for QA: It might be worthwhile to confirm that the output for 3x functions is the same before/after this change. It seemed the same to me but I did not try many permutations (obviously due to the bug you can only test 3x functions that give at least two arguments to newfunction).", "created": "2015-02-17T12:36:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "I verified this in Hailee's branch at SHA=849c731511615cb9e6b6eca83f05a774415f2825. Using the same example file, a single argument to a 3x function doesn't cause an exception:\n{code}\n# puppet strings threex.rb\nFiles:           1\nModules:         1 (    1 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         1 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\n 50.00% documented\ntrue\n\n# puppet apply -e 'threex(\"foo\",\"bar\")\nNotice: Compiled catalog for fssj4fv37zulfl9.delivery.puppetlabs.net in environment production in 0.03 seconds\nNotice: /File[/etc/puppet/environments/production]/seluser: seluser changed 'unconfined_u' to 'system_u'\nNotice: Finished catalog run in 0.01 seconds\n\n# cat foo\nbar\n{code}\n", "created": "2015-02-17T16:24:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Did not detect a visible difference between the pre-fix and post-fix output for 3.x functions, so I'm calling it good. When this clears CI, it can be pulled through to Resolved.", "created": "2015-02-17T16:34:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "merged to master: 6f7a983", "created": "2015-02-17T18:38:00.000000"}], "components": [], "created": "2015-02-10T16:44:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@20961fb7"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyybhb:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "11/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_60131910_*|*_1_*:*_1_*:*_36919_*|*_10007_*:*_2_*:*_105595359_*|*_3_*:*_2_*:*_355531060_*|*_5_*:*_1_*:*_2350551715_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_150456092"}], "description": "The way the 3x function handler is written it expects that there are at least two arguments passed into newfunction, and when only the name is given strings with throw an exception. However it is not required to specify anything other than the function name, so the handler should be fixed so that it does not throw an exception with only one argument.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32556", "fixedVersions": ["PDOC 0.2.0"], "id": "32556", "issueType": "Bug", "key": "PDOC-27", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-02-18T11:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "3x functions cause exception with less than two arguments", "timeSpent": "PT0S", "updated": "2016-05-11T17:30:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "We had a confusion over Puppetx. It should be PuppetX, and files goes into a directory named puppet_x. For a while on master this has been wrong but is now corrected - hence the downstream failure in strings. (At least I think that is what is causing this problem).", "created": "2015-02-03T10:06:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "As Henrik described, this failure is due to the renaming of the Puppetx namespace on the master branch of puppet.\n\nA pull request has been opened to fix this issue, but merging it will break strings with versions of puppet older than 4.0. This will require us to bump the version of strings. As such, we're going to wait to merge the pull request until puppet 4 is release. In the mean time, we will be unable to test strings against the most recent version of master. It will have to be tested with a version of puppet before the pull request for PUP-3900 was merged.", "created": "2015-02-04T12:33:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "PR 25 was merged to master at d9d5ae6 - this fixes both the reported problem, as well as handling the PuppetX namespace change.", "created": "2015-02-06T17:51:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Verified at SHA=. Puppet strings doesn't fail while processing 3.x function prototypes, but it does emit an exception using the same code above (threex.rb):\n{code}\nroot@ubuntu:~# puppet strings threex.rb\n[error]: Unhandled exception in PuppetX::PuppetLabs::Strings::YARD::Handlers::Puppet3xFunctionHandler:\n[error]:   in `threex.rb`:5:\n\n\t5: newfunction(:threex) do |args|\n\n[error]: NoMethodError: undefined method `map' for nil:NilClass\n[error]: Stack trace:\n\t/etc/puppet/environments/production/modules/puppetlabs-strings/lib/puppet_x/puppetlabs/strings/yard/handlers/puppet_3x_function_handler.rb:69:in `process_parameters'\n\t/etc/puppet/environments/production/modules/puppetlabs-strings/lib/puppet_x/puppetlabs/strings/yard/handlers/puppet_3x_function_handler.rb:7:in `block in <class:Puppet3xFunctionHandler>'\n\t/var/lib/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:114:in `block (2 levels) in process'\n\t/var/lib/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:112:in `each'\n\t/var/lib/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:112:in `block in process'\n\t/var/lib/gems/1.9.1/gems/yard-0.8.7.6/lib/yard/handlers/processor.rb:111:in `each'\n\nFiles:           1\nModules:         1 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\n 100.00% documented\ntrue\n\n# puppet apply -e 'threex(\"/tmp/foo\", \"bar\")\nNotice: Compiled catalog for ubuntu.corp.puppetlabs.net in environment production in 0.01 seconds\nNotice: Finished catalog run in 0.01 seconds\nroot@ubuntu:~# cat /tmp/foo\nbar\n{code}\n\nThis bug reported in this ticket is resolved. PDOC-24 maybe not.", "created": "2015-02-10T11:39:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "I just went back to the 0.1.1 release of strings and I'm seeing this exception, so it's unrelated to PDOC-24 and has been around for quite some time. I'm digging into it now, trying to figure out why I've never encountered this before with the modules I've documented.", "created": "2015-02-10T15:12:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "I've tracked down the issue. The problem is that the way the 3x function handler is written it expects that at least two arguments are passed into newfunction (the name and something else like :type or :doc). The reason we haven't encountered this before is because all the 3x functions that we've used for testing have had at least two arguments.\n\nIf my understanding is correct though this bug has existed basically since strings was created, so it's not actually related to PDOC-24 or PDOC-26. I'll file a separate ticket for it.", "created": "2015-02-10T15:58:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "PDOC-27 has been filed for the 3x function bug.", "created": "2015-02-10T16:50:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Pulling through. Tested and working.", "created": "2015-02-10T21:34:00.000000"}], "components": [], "created": "2015-02-02T16:59:00.000000", "creator": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3bbb4e88"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyy82f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_235531828_*|*_1_*:*_1_*:*_156898758_*|*_10007_*:*_1_*:*_191707895_*|*_10009_*:*_1_*:*_38223796_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_85299124"}], "description": "From master at SHA=f94e84467d6efba95b274eaaded4945e156a9ac6.\nGiven this file:\n{code}\n# threex.rb\nmodule Puppet::Parser::Functions\n  newfunction(:threex) do |args|\n    filename = args[0]\n    str = args[1]\n    File.open(filename, 'a') {|fd| fd.puts str }\n  end\nend\n{code}\n\nPuppet strings fails with an uninitialized constant:\n{code}\n[root@kll9xtq49l9makd ~]# puppet strings threex.rb --trace\nError: uninitialized constant Puppetx\n/etc/puppet/environments/production/modules/puppetlabs-strings/lib/puppetx/puppetlabs/strings.rb:8:in `<top (required)>'\n/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:53:in `require'\n/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:53:in `require'\n/etc/puppet/environments/production/modules/puppetlabs-strings/lib/puppetx/puppetlabs/strings/actions.rb:1:in `<top (required)>'\n/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:53:in `require'\n/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:53:in `require'\n/etc/puppet/environments/production/modules/puppetlabs-strings/lib/puppet/face/strings.rb:36:in `block (3 levels) in <top (required)>'\n/usr/share/ruby/vendor_ruby/puppet/interface/action.rb+eval[wrapper]:242:in `yardoc'\n/usr/share/ruby/vendor_ruby/puppet/application/face_base.rb:248:in `main'\n/usr/share/ruby/vendor_ruby/puppet/application.rb:352:in `run_command'\n/usr/share/ruby/vendor_ruby/puppet/application.rb:344:in `block in run'\n/usr/share/ruby/vendor_ruby/puppet/util.rb:438:in `exit_on_fail'\n/usr/share/ruby/vendor_ruby/puppet/application.rb:344:in `run'\n/usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:124:in `run'\n/usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:72:in `execute'\n/usr/bin/puppet:5:in `<main>'\nError: Try 'puppet help strings yardoc' for usage\n{code}\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32352", "fixedVersions": ["PDOC 0.2.0"], "id": "32352", "issueType": "Bug", "key": "PDOC-26", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "resolution": "Fixed", "resolutionDate": "2015-02-10T21:34:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Puppet strings fails while processing 3.x functions", "timeSpent": "PT0S", "updated": "2016-05-11T17:33:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "[~accountid:557058:54921db7-0271-4f8f-be78-bf68cccb06d2], thanks so much for reporting this, I will try to look into it ASAP", "created": "2015-02-03T11:17:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "I've submitted an [upstream pull request|https://github.com/lsegal/yard/pull/843] to YARD to allow us to patch the regular expressions doing the namespace matching. If this change is accepted I'll just need to make a quick change to strings and this issue should be resolved.\n\nI'm going to move this ticket to blocked until we hear back form YARD's author on how he feels about the patch. If the response time is very long, or he doesn't like the patch then I can just patch the method that is a problem. This will be a little messy as it's a private method, but it's a plausible solution. Just not the best one.", "created": "2015-03-06T11:23:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "QA Risk assessment = Medium\nProbability: medium, docs produced on all custom types and classes\nSeverity: low, docs only.  annoying, but doesn't affect functionality\nTest layer prediction: unit\nCurrently, risk assessment of medium targets manual validation with possible future automation by QA", "created": "2015-03-09T09:31:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "The patch has been merged into the master branch of YARD! Leaving this in blocked for now while I inquire about the next release of the YARD gem. If it's soon we may just want to wait, but if it will be a while we'll have to find another work around.", "created": "2015-03-09T11:34:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "yard patch merged to master: 56ab5f2", "created": "2015-03-13T16:20:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Marking as resolved", "created": "2015-03-17T17:13:00.000000"}], "components": [], "created": "2015-01-27T07:16:00.000000", "creator": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@599ec762"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp3if:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Feb/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_347409399_*|*_1_*:*_1_*:*_620419115_*|*_10007_*:*_1_*:*_16164390_*|*_3_*:*_3_*:*_1051936239_*|*_5_*:*_1_*:*_239669_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_1339614_*|*_10004_*:*_2_*:*_327521924_*|*_10006_*:*_1_*:*_1901023250"}], "description": "If I have a class called *role::peoplesearch::app*, it appears in the manifest list dropdown as *rolerole::peoplesearch::app*. *role::peoplesearch::app:xyz* is displayed as *rolerole::peoplesearchrole::peoplesearch::app::xyz*. \n\nTested on current master (345d72b2d7).", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32575", "fixedVersions": ["PDOC 0.2.0"], "id": "32575", "issueType": "Bug", "key": "PDOC-25", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:54921db7-0271-4f8f-be78-bf68cccb06d2", "resolution": "Fixed", "resolutionDate": "2015-03-17T17:13:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Manifest list names are wrong for deeply nested classes", "timeSpent": "PT0S", "updated": "2015-03-19T16:29:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "merged to master at 1377132", "created": "2015-01-28T17:54:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Failed review as described in related bug PDOC-26.", "created": "2015-02-03T09:13:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "This failed review due to a change in puppet which was causing downstream failures in strings.\n\nSince the fix will break strings with versions of puppet older than 4.0, we've decided not to merge the change in just yet. As such, this and any further work on strings will need to be tested before the pull request for PUP-3900 was merged until we implement the namespace change.", "created": "2015-02-04T12:14:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "I see that the PDOC-24 change isn't going in. Could you help me parse, \"this and any further work on strings will need to be tested before the pull request for PUP-3900 was merged until we implement the namespace change,\" please?", "created": "2015-02-04T13:39:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Sure, basically the pull request for PUP-3900 updated the Puppetx namespace to PuppetX. However we are not yet ready to update strings so that is compatible with this change. As such, it will not run with any commit on the master branch of puppet since these changes have been merged in. The merge commit is [635d560|https://github.com/puppetlabs/puppet/commit/635d5600c7cbbeeb0072389ba82c9a7e77ab0b3d] so if you want to test strings you will have to check out a puppet commit before this one.\n\nAlternatively just use a tagged version of puppet or the stable branch.", "created": "2015-02-04T14:08:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "I can test against stable or a tagged version. After giving it some thought, though, I would have to say that PUP-3900 breaks (and blocks) PDOC-24. I don't think it makes sense to test strings until it catches up to the current state of the codebase.", "created": "2015-02-05T10:18:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "That's a fair point, but since the decision was not to update strings until we release puppet 4 I think not testing it until then presents a pretty serious issue. \n\nWe want to have a release of strings ready to go with puppet 4, and if we block all tickets because of the namespace change in puppet, we can't do the work that needs to be done for the release. That would mean releasing the new version of strings _after_ puppet 4, but as it stands the current version is only compatible with puppet 3 (and not puppet 4). It's a tricky situation, because we don't want to break strings for the people currently using it with puppet 3 but we need to have it compatible with puppet 4 when it is released.\n\nThe best solution I see is to finish up development on strings while testing it with an older version so that we can make the breaking namespace change at the same time puppet 4 is released. \n\nTotally happy to hear other thoughts on this though. [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] and/or [~accountid:557058:c9e9d862-990b-48eb-b4e3-2e4daf1e6920], would either of you like to weigh in on this?", "created": "2015-02-05T10:53:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Spoke with [~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] and he thinks we may be able to implement a workaround to support both versions of the namespace. More on that soon.", "created": "2015-02-05T12:03:00.000000"}], "components": [], "created": "2015-01-06T15:55:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@134849c5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyp54f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "29/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_2_*:*_67665974_*|*_1_*:*_2_*:*_28607516_*|*_10007_*:*_2_*:*_411903633_*|*_3_*:*_4_*:*_1483354169_*|*_10009_*:*_1_*:*_1870611329_*|*_5_*:*_1_*:*_1134136873_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_3_*:*_970178236_*|*_10006_*:*_1_*:*_82829052"}], "description": "Since the completion of PDOC-17, strings now has basic templates for classes and defined types. \n\nWe've decided that having our own templates rather than inheriting functionality from YARD is preferable because it will allow us to control which tags we support and make it easier to customize the HTML in the future.\n\nAs such, it is necessary to get some basic templates written for 3x and 4x functions.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32358", "fixedVersions": ["PDOC 0.2.0"], "id": "32358", "issueType": "Improvement", "key": "PDOC-24", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-03-04T13:15:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add basic templates for puppet functions ", "timeSpent": "PT0S", "updated": "2015-03-17T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623c17d4761efb0069ce0954", "body": "*NOTE this needs to be updated because the format has evolved.*\nIt was decided that strings should be able to emit our structured data model as json.\n\nStrings now creates a file at {./doc/registry_dump.json} which has almost all of the data which yard extracted from the code. This file has the following structure:\nIt is a json object which has 4 keys representing the different types of Puppet code and extension functions Strings reads. The value for each key is a list of json objects representing each puppet class, function, etc.\nHere is an example of the top level structure:\n{code}\n{\n\"defined_types\": [...],\n\"puppet_classes\": [...],\n\"puppet_functions\": [...],\n\"puppet_types\": [...],\n\"puppet_providers\": [...]\n}\n{code}\n\nEach defined type or puppet class object has the following properties and values:\n* name: A string representing the name of the defined type\n* file: The file the defined type came from. A string.\n* line: The line in the file the defined type came from. A number.\n* docstring: A string. The docstring describing our defined type.\n* signatures: A list of function signatures which may be supported by the defined type. Each function signature is a json object whose keys are the parameter names, and whose values are the types those parameters may take. This is extracted from the code itself.\n* parameters: An object whose keys are the parameter names and whose values are the parameter's types or null. This is extracted from the docstring.\n\nPuppet 4x and 3x functions are in the same list but have different shapes.\n\nPuppet 3x functions have:\n* name: A string representing the name of the defined type\n* file: The file the defined type came from. A string.\n* line: The line in the file the defined type came from. A number.\n* docstring: A string. The docstring describing our defined type.\n* puppet_version: the number 3.\n* documented_params: A object whose keys are the parameters which were\ndocumented and whose values are the types they may take, or null.\n\nPuppet 4x functions have everything 3x functions do as well as:\n* The puppet_version is the number 4, not 3 (surprise!)\n* signatures: A list of function signatures which may be supported by the defined type. Each function signature is a json object whose keys are the parameter names, and whose values are the types those parameters may take. This is extracted from the code itself.\n\nEach puppet type object has the following properties and values:\n* name: A string representing the name of the defined type\n* file: The file the defined type came from. A string.\n* line: The line in the file the defined type came from. A number.\n* docstring: A string. The docstring describing our object.\n* parameters: A list of objects with the following shape:\n\t* allowed_vales: a list of strings representing the allowed values.\n\t* default: a string or null.\n\t* desc: like the docstring\n\t* exists?: A boolean\n\t* name: the parameter name\n\t* parameter: A boolean\n\t* puppet_type: A boolean\n* properties: A list of objects with a shape very similar to parameters but also including:\n\t* namevar: A boolean.\n\t* Does not include the parameter key.\n\t* property: A boolean.\n* features: Please see the features section in the puppet provider object description.\n\nEach puppet provider object has the following properties and values:\n* name: A string representing the name of the defined type\n* file: The file the defined type came from. A string.\n* line: The line in the file the defined type came from. A number.\n* docstring: A string. The docstring describing the object.\n* commands: A list of the names of the commands available.\n* confines: An object whose keys are the confine keys and whose values are the confine values\n* defaults: Similar to above.\n* features: A list of objects representing possible features. They have the following shape:\n\t* desc: the description of the feature\n\t* methods: null or a list of the available methods as strings.\n\t* name: the feature's name.\n* type_name: The type this provider accompanies.\n", "created": "2015-09-17T11:21:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "If all of that is confusing or you want an example, please consult this gist: https://gist.github.com/iankronquist/cf2141a662bf1651bc9f", "created": "2015-09-17T12:20:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cea1b0f5-fa7c-414b-9854-4f3e564a1f4c", "body": "I lost access to my old JIRA account when my internship ended so I can't edit the original comment.\nQA: the document describing the schema of the structure has been placed in the repo. It is in the file {./json_schema.md}.", "created": "2015-10-07T19:24:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "I'm going to go ahead and test this ticket so we can get it through functional review. It's been drifting in and out of sprints for months and I'd just like to take some time and get it knocked out.", "created": "2016-03-09T16:16:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cea1b0f5-fa7c-414b-9854-4f3e564a1f4c", "body": "[~accountid:623cffe88d8b9c0068b93ebf] Thanks! If you need any help or have any questions, let me know!", "created": "2016-03-09T18:39:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Here's the JSON schema produced for the entire puppetdb module: https://gist.github.com/HAIL9000/93dcfc091d5391385cad\n\nHere's the result of running this against a few various files in the [puppetdb module|https://forge.puppetlabs.com/puppetlabs/puppetdb]:\n\nAgainst a provider, {{lib/puppet/provider/puppetdb_conn_validator}}:\n{noformat}[root@s5lt2wrzmow34kg puppetdb_conn_validator]# bundle exec puppet strings  puppet_https.rb --emit-json provider.json\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\nPuppet Providers:     1 (    0 undocumented)\n 100.00% documented\n\n[root@s5lt2wrzmow34kg puppetdb_conn_validator]# python -m json.tool provider.json\n{\n    \"defined_types\": [],\n    \"puppet_classes\": [],\n    \"puppet_functions\": [],\n    \"puppet_providers\": [\n        {\n            \"commands\": [],\n            \"confines\": {},\n            \"defaults\": {},\n            \"docstring\": \"This file contains a provider for the resource type `puppetdb_conn_validator`,\\nwhich validates the puppetdb connection by attempting an https connection.\",\n            \"examples\": [],\n            \"features\": [],\n            \"file\": \"puppet_https.rb\",\n            \"line\": 15,\n            \"name\": \"puppet_https_provider\",\n            \"type_name\": \"puppetdb_conn_validator\"\n        }\n    ],\n    \"puppet_types\": []\n}{noformat}\n\nAgainst a puppet type, {{lib/puppet/type/puppetdb_conn_validator.rb}}:\n\n{noformat}[root@s5lt2wrzmow34kg type]# bundle exec puppet strings puppetdb_conn_validator.rb --emit-json type.json\nFiles:           1\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Defined Types:     0 (    0 undocumented)\nPuppet Types:     1 (    0 undocumented)\nPuppet Providers:     0 (    0 undocumented)\n 100.00% documented\n\n[root@s5lt2wrzmow34kg type]# python -m json.tool type.json\n{\n    \"defined_types\": [],\n    \"puppet_classes\": [],\n    \"puppet_functions\": [],\n    \"puppet_providers\": [],\n    \"puppet_types\": [\n        {\n            \"docstring\": \"Verify that a connection can be successfully established between a node\\nand the puppetdb server.  Its primary use is as a precondition to\\nprevent configuration changes from being applied if the puppetdb\\nserver cannot be reached, but it could potentially be used for other\\npurposes such as monitoring.\",\n            \"examples\": [],\n            \"features\": [],\n            \"file\": \"puppetdb_conn_validator.rb\",\n            \"line\": 1,\n            \"name\": \"puppetdb_conn_validator\",\n            \"parameters\": [\n                {\n                    \"allowed_values\": [],\n                    \"default\": null,\n                    \"docstring\": \"An arbitrary name used as the identity of the resource.\",\n                    \"name\": \"name\",\n                    \"namevar\": true\n                },\n                {\n                    \"allowed_values\": [],\n                    \"default\": null,\n                    \"docstring\": \"The DNS name or IP address of the server where puppetdb should be running.\",\n                    \"name\": \"puppetdb_server\",\n                    \"namevar\": false\n                },\n                {\n                    \"allowed_values\": [],\n                    \"default\": null,\n                    \"docstring\": \"The port that the puppetdb server should be listening on.\",\n                    \"name\": \"puppetdb_port\",\n                    \"namevar\": false\n                },\n                {\n                    \"allowed_values\": [],\n                    \"default\": \"true\",\n                    \"docstring\": \"Whether the connection will be attemped using https\",\n                    \"name\": \"use_ssl\",\n                    \"namevar\": false\n                },\n                {\n                    \"allowed_values\": [],\n                    \"default\": null,\n                    \"docstring\": \"URL to use for testing if the PuppetDB database is up\",\n                    \"name\": \"test_url\",\n                    \"namevar\": false\n                },\n                {\n                    \"allowed_values\": [],\n                    \"default\": \"15\",\n                    \"docstring\": \"The max number of seconds that the validator should wait before giving up and deciding that puppetdb is not running", "created": "2016-03-10T17:02:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "This appears to work as described! A few improvements we may want to file tickets for (but that needn't hold up this ticket):\n\n# Add some spec test that make sure we get the expected json for a given file\n# It doesn't seem to be getting the entire namespace for defined types and classes (e.g. we get mod when we should get apache:: mod)", "created": "2016-03-10T17:18:00.000000"}, {"author": "qm:f7b4bc64-445a-440e-8354-a55854c39cee:cea1b0f5-fa7c-414b-9854-4f3e564a1f4c", "body": "[~accountid:623cffe88d8b9c0068b93ebf] Interesting. I wish I had time to address those tickets, but I'm really busy right now. Thanks for finally getting this reviewed!", "created": "2016-03-10T18:35:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "bq. Hailee Kenney Interesting. I wish I had time to address those tickets, but I'm really busy right now. Thanks for finally getting this reviewed!\n\nDon't worry about it at all! Just want to get them recored for prosperity in case this project gets picked up again. The JSON stuff we have right now is real cool so I'd like to get it into the hands of users and see what they do with it.", "created": "2016-03-10T18:43:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "We should get the tickets [~accountid:623cffe88d8b9c0068b93ebf] mentioned (before removing this ticket from Language Triage sprint).", "created": "2016-03-15T10:36:00.000000"}], "components": [], "created": "2014-11-10T11:47:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71d78fd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hz4yf3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "4.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2010796353_*|*_1_*:*_1_*:*_29622081134_*|*_5_*:*_1_*:*_1678969596_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_10443744862"}], "description": "Add functionality to strings that allows us to output documentation as our own structured data model. This will involve translating YARD's Registry of code objects into our own output rather than using handlers to generate HTML", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32529", "fixedVersions": ["PDOC 0.4.0"], "id": "32529", "issueType": "New Feature", "key": "PDOC-23", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-03-11T11:44:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add the ability to output JSON", "timeSpent": "PT0S", "updated": "2016-10-06T14:14:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Docs will be using the newly enhanced JSON output to populate all internal documentation, so I don't think this is needed anymore.", "created": "2016-11-03T13:53:00.000000"}], "components": [], "created": "2014-11-10T11:44:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@50c5e4bd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyx43r:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_62557747383_*|*_6_*:*_1_*:*_0"}], "description": "Since we want the docs team to be able to generate documentation using strings, figure out exactly what kind of format they would like. Rather than replacing YARD's intermediate code object model, we're going to add our own structured data model as a potential output (just like HTML or JSON)", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32555", "fixedVersions": [], "id": "32555", "issueType": "Task", "key": "PDOC-22", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2016-11-03T13:53:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Talk to docs to figure out what our own DOM should look like", "timeSpent": "PT0S", "updated": "2017-03-01T17:08:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Merged into master in [2ceead0|https://github.com/puppetlabs/puppetlabs-strings/commit/2ceead0822d266c93a9f1f0010d3eab08f301ad0]", "created": "2015-07-15T17:36:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "There are no warnings when there is a parameter type mismatch in a defined type. Should be caused by the same issue as mentioned in PDOC-19 (works for class definitions).\n\n{code}\n[root@ey7vzwhgll49tjt foo]# cat manifests/init.pp\nclass foo( String $ident = \"Bob\" , Integer $age = 10, )\n{\n   notify {'$ident':}\n   notify {'$age':}\n}\n\n\n# @param [String] barval barvalue\ndefine foo::bar ( String $barname, Float $barval)\n {\n   notify {'$barname':}\n   notify {'$barval':}\n}\n[root@ey7vzwhgll49tjt foo]# puppet strings\nFiles:           2\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     2 (    2 undocumented)\nPuppet Types:     1 (    0 undocumented)\n 33.33% documented\ntrue\n{code}\n", "created": "2015-07-27T17:51:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Those examples would not trigger the warning - the warning is issued when you have documented the type one way, and the actual type is something else. i.e. if you do something like this:\n\n{code:puppet}\n# @param Integer a - the a param\ndefine foo(String $a) { }\n{code}\n", "created": "2015-07-28T08:47:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "\nIn the example, $barval is declared as Float and is documented as String. Shouldn't that produce a warning?\n\n{code}\n# @param [String] barval barvalue\ndefine foo::bar ( String $barname, Float $barval)\n{code}\n\nA similar documentation mismatch for class definition produces a warning.\n\n{code}\n# @param [Float] age\nclass foo( String $ident = \"Bob\" , Integer $age = 10, )\n{\n   notify {'$ident':}\n   notify {'$age':}\n}\n\n[root@ey7vzwhgll49tjt foo]# puppet strings\n[warn]: @param tag types do not match the code. The age parameter is declared as types [\"Float\"] in the docstring, but the code specifies the types [#<Puppet::Pops::Types::PIntegerType:0x000000024ae320 @from=-Infinity, @to=Infinity>] in file manifests/init.pp near line 2\n\n{code}", "created": "2015-07-28T11:33:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "I misread. Yes you are right. The case for the user defined type is wrong - it should warn, just like the class case.\nPing [~accountid:623c17d4761efb0069ce0954]", "created": "2015-07-28T14:21:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "Addressed in GitHub PR #41. It turns out I forgot to add the logic which parses the types and attaches them to the code object in the handler.\nhttps://github.com/puppetlabs/puppetlabs-strings/pull/41", "created": "2015-07-28T15:01:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "Validated again in SHA:b1b27a33d32c6f37152a53dad9018b9aace3f0a5 and still a warning is not created for the defined type. According to [~accountid:623c17d4761efb0069ce0954], the fix for PDOC-35 will only resolve that issue.", "created": "2015-07-31T16:02:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "I think I might be a little confused... there are no warnings for defined types? That should definitely be dealt with in this ticket. PDOC-35 is about supporting types and providers and shouldn't have an effect on defined types.", "created": "2015-07-31T16:34:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "\nThis is what I see.\n{code}\n[root@s87ruicnjxz6ps4 foo]# cat /etc/puppetlabs/code/modules/foo/manifests/init.pp\nclass foo( String $ident = \"Bob\" , Integer $age = 10, )\n{\n   notify {'$ident':}\n   notify {'$age':}\n}\n\n# @param [Integer] barval barvalue\ndefine foo::bar ( String $barname, Float $barval)\n {\n   notify {'$barname':}\n   notify {'$barval':}\n}\n[root@s87ruicnjxz6ps4 foo]# puppet strings\nFiles:           2\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     2 (    2 undocumented)\nPuppet Types:     1 (    0 undocumented)\n 33.33% documented\ntrue\n{code}", "created": "2015-07-31T16:51:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Hmmm... that doesn't seem right since you have some mismatched types there. [~accountid:623c17d4761efb0069ce0954] do you know why that's happening? ", "created": "2015-07-31T17:18:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "[~accountid:623c17d4761efb0069ce0954], [~accountid:623cffe88d8b9c0068b93ebf]\n\nThe warning is now working for both defined type and class definitions. But for class definitions each warning is printed out twice to the stdout. It will be neat if this can be restricted to once.\n{code}\n  [root@gk5pj5xsk8fsogp foo]# cat /etc/puppetlabs/code/modules/foo/manifests/init.pp\n# @param [Float] ident identification\nclass foo( String $ident = \"Bob\" , Integer $age = 10, )\n{\n   notify {'$ident':}\n   notify {'$age':}\n}\n\n# @param [Integer] barname\ndefine foo::bar ( String $barname, Float $barval)\n {\n   notify {'$barname':}\n   notify {'$barval':}\n}\n[root@gk5pj5xsk8fsogp foo]# puppet strings\n[warn]: @param tag types do not match the code. The ident parameter is declared as types [\"Float\"] in the docstring, but the code specifies the types [#<Puppet::Pops::Types::PStringType:0x00000004a709c8 @size_type=nil, @values=[]>] in file manifests/init.pp near line 2\n[warn]: @param tag types do not match the code. The ident parameter is declared as types [\"Float\"] in the docstring, but the code specifies the types [#<Puppet::Pops::Types::PStringType:0x00000004a709c8 @size_type=nil, @values=[]>] in file manifests/init.pp near line 2\n[warn]: @param tag types do not match the code. The barname parameter is declared as types [\"Integer\"] in the docstring, but the code specifies the types [#<Puppet::Pops::Types::PStringType:0x00000004a6b748 @size_type=nil, @values=[]>] in file manifests/init.pp near line 9\nFiles:           2\nModules:         0 (    0 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       0 (    0 undocumented)\nMethods:         0 (    0 undocumented)\nPuppet Classes:     2 (    1 undocumented)\nPuppet Types:     1 (    0 undocumented)\n 66.67% documented\n\n{code}\n\nNote: The resulting html seems to take the parameter type from the documented type and not from the declared type. Is that the right behavior? So if the documentation is wrong as in the above example, the resulting html has the wrong parameter type.\n{code}\n\n[root@gk5pj5xsk8fsogp doc]# cat /etc/puppetlabs/code/modules/foo/doc/foo.html\n\n  <ul class=\"param\">\n    <li><span class=\"name\">ident </span><span class=\"type\">(<tt>Float</tt>)</span><tt> => \"Bob\"</tt>- <div class=\"inline\"><p> identification </p></div></li><li><span class=\"name\">age </span><span class=\"type\">(<tt>Integer</tt>)</span><tt> => 10</tt></li>\n  </ul>\n\n\n[root@gk5pj5xsk8fsogp doc]#cat /etc/puppetlabs/code/modules/foo/doc/foo/bar.html\n <ul class=\"param\">\n    <li><span class=\"name\">barname </span><span class=\"type\">(<tt>Integer</tt>)</span></li><li><span class=\"name\">barval </span><span class=\"type\">(<tt>Float</tt>)</span></li>\n  </ul>\n\n\n\n{code}", "created": "2015-08-10T12:54:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "1. We originally thought this had to do with yard parsing nested puppet types incorrectly and ignored it. It turns out yard is executing a block of code twice when I  thought it should only be executed once. I'm not sure if this is intended behavior on Yard's part but I extracted the code from the block, put it somewhere else, and have an open PR to fix this.\n\n2. The documented type should take precedence over the actual type because it may be narrower than the actual type. This is intended behavior even though I told you the wrong thing the other day.", "created": "2015-08-12T11:35:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "risk assessment is low.  no further validation at this time.\nFYI: [~accountid:623cffe88d8b9c0068b93ebf] [~accountid:623c17d4761efb0069ce0954]", "created": "2015-08-20T16:52:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "I'm very glad to see the type checking, however the output doesn't match the documented Types from Puppet documentation. Here are some examples:\n\n{code}\n[warn]: @param tag types do not match the code. The config\n    parameter is declared as types [\"Hash\"] in the docstring,\n    but the code specifies the types [Puppet::Pops::Types::PHashType]\n    in the file manifests/user.pp near line 30.\n{code}\n\nThis definition was actually {{Hash[String,String]}}\n\n{code}\n[warn]: @param tag types do not match the code. The config\n    parameter is declared as types [\"Hash\"] in the docstring,\n    but the code specifies the types [Puppet::Pops::Types::PHashType]\n    in the file manifests/init.pp near line 50.\n{code}\n\nThis definition was actually {{Hash[String,Optional[String]]}}\n\n{code}\n[warn]: @param tag types do not match the code. The status\n    parameter is declared as types [\"String\"] in the docstring,\n    but the code specifies the types [Puppet::Pops::Types::PEnumType]\n    in the file manifests/agent.pp near line 38.\n{code}\n\nThis definition was actually {{Enum[\"running\",\"stopped\"]}}\n\n\nSo I'm very glad to see this, but it may generate some confusion for users not familar with Puppet internals.", "created": "2015-09-18T00:19:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "[~accountid:557058:c5ea6c35-c500-4334-8131-e031af9f81a4] What version of puppet are you using? Can I see the source files you're testing on?\nMy guess is that the inspect method was added to Puppet types after your version of puppet was released, but I'll have to confirm this after a meeting.\n\nWith puppet 4.2.1 and the file below I'm getting:\n{code}\n[warn]: @param tag types do not match the code. The a\n    parameter is declared as types [\"Hash\"] in the docstring,\n    but the code specifies the types [\"'Hash[String,String]'\"]\n    in the file 4xtyped.rb near line 5.\n[warn]: @param tag types do not match the code. The b\n    parameter is declared as types [\"String\"] in the docstring,\n    but the code specifies the types [\"'Numeric'\"]\n    in the file 4xtyped.rb near line 5.\n[warn]: @param tag types do not match the code. The s1\n    parameter is declared as types [\"Hash\"] in the docstring,\n    but the code specifies the types [\"'Hash[String,Optional[String]]'\"]\n    in the file 4xtyped.rb near line 5.\n[warn]: @param tag types do not match the code. The s2\n    parameter is declared as types [\"String\"] in the docstring,\n    but the code specifies the types [\"'Enum[\\\"running\\\",\\\"stopped\\\"]'\"]\n    in the file 4xtyped.rb near line 5\n{code}\n{code}\n# @param a [Hash] comment\n# @param b [String] comment\n# @param s1 [Hash] comment\n# @param s2 [String] comment\nPuppet::Functions.create_function(:min) do\n  dispatch :min do\n    param 'Hash[String,String]', :a\n    param 'Numeric', :b\n  end\n\n  dispatch :min_s do\n    param 'Hash[String,Optional[String]]', :s1\n    param 'Enum[\"running\",\"stopped\"]', :s2\n  end\n\n  def min(x,y)\n    x <= y ? x : y\n  end\n\n  def min_s(x,y)\n    cmp = (x.downcase <=> y.downcase)\n    cmp <= 0 ? x : y\n  end\nend\n{code}", "created": "2015-09-18T15:22:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "I'm using Puppet 4.2.2 with Puppet Strings straight from GitHub.  The definitions are pretty much exactly what I showed above.\n\nYou can see the exact code at the following places:\n* https://github.com/jorhett/puppet4-module/blob/master/manifests/user.pp#L31\n* https://github.com/jorhett/puppet4-module/blob/master/manifests/init.pp#L54\n* https://github.com/jorhett/puppet4-module/blob/master/manifests/agent.pp#L40\n\nI've fixed the definitions now, but if you pull from hash https://github.com/jorhett/puppet4-module/commit/62096a0797bf5864fd9fac70f2266f35263ee5c7 you can test with the same inputs.\n\n", "created": "2015-09-18T17:14:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "This issue only happens in Puppet code, not types and providers, which is why it initially evaded my detection. An issue has been opened, PDOC-56, and a PR is pending. Thank you for the report!", "created": "2015-09-18T17:19:00.000000"}], "components": [], "created": "2014-11-10T11:37:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@71f36c1"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "pdoc"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "warn to prevent bad docs"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyogyn:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "More work for Ian"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "27/Jul/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_5_*:*_354478381_*|*_1_*:*_1_*:*_13388424199_*|*_10007_*:*_6_*:*_582922291_*|*_3_*:*_2_*:*_274854382_*|*_10009_*:*_1_*:*_118706_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_4_*:*_1753338488_*|*_10006_*:*_3_*:*_2137235295_*|*_10005_*:*_1_*:*_5975152581"}], "description": "Warn when a parameter\u2019s documented type (\u201c@param [Type] name comment\u201d) does not match the type declared in the manifest (\u201cclass b(DifferentType $name)\u201d)", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32417", "fixedVersions": ["PDOC 0.3.0"], "id": "32417", "issueType": "Improvement", "key": "PDOC-21", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-08-20T16:52:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Warn when documented type does not match declared type", "timeSpent": "PT0S", "updated": "2015-09-18T17:19:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "What is not working wrt. nested constructs?", "created": "2015-04-14T11:38:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Please attach the link to the PR.", "created": "2015-07-27T15:13:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "Sorry, still trying to get the workflow down.", "created": "2015-07-28T14:57:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Merged into master in [b1b27a3|https://github.com/puppetlabs/puppetlabs-strings/commit/b1b27a33d32c6f37152a53dad9018b9aace3f0a5]", "created": "2015-07-30T15:07:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "totally covered by unit tests including output html file parsing.  resolving", "created": "2015-08-04T10:59:00.000000"}], "components": [], "created": "2014-11-10T11:36:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3118e1e8"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Unit"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyolbj:"}, {"fieldName": "Scope Change Category", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Adopted"}, {"fieldName": "Scope Change Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "More work for Ian"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Apr/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_330144002_*|*_1_*:*_1_*:*_13388529717_*|*_10007_*:*_1_*:*_268400648_*|*_3_*:*_1_*:*_617100276_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_87013978_*|*_10004_*:*_1_*:*_5975012367_*|*_10006_*:*_1_*:*_2396809851"}], "description": "Handle nested classes and defines (\u201cclass a() { class b() {} }\u201d is a and a::b).\n\nCurrently nested classes are not properly parsed and do not appear in emitted documentation.\nThis is because classes are being handled in the wrong order. Superclasses need to be parsed before their subclasses.", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32591", "fixedVersions": ["PDOC 0.3.0"], "id": "32591", "issueType": "Improvement", "key": "PDOC-20", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-08-04T10:59:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add support for nested classes and defines", "timeSpent": "PT0S", "updated": "2015-08-04T10:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "The class {{Puppet::Pops::Types::TypeParser}} is your friend. It can do two things:\n\n* The method {{typeparser.parse(string)}} takes a string expressing a puppet type (e.g \"Array[String[1]]\") and turn that into an instance of a type.\n* The method {{typeparser.interpret(ast)}} takes an AST model and turns into an instance of a type. It only evaluates expressions that are safe (i.e. constants/literals)\n\nBoth of these methods only accepts literal/static types (it is not possible to use variables, calls, or other expressions) and will raise an exception if an attempt is made, or if referencing something that is not a type.\n\nThus, the parse method is suitable for getting the type of what the user wrote in documentation, and the interpret method to get the type of what use wrote in the code.\n\nThere is one quirk to deal with in the future when users can define types in the puppet language - currently all types are defined in the type system itself, and if a user were to reference a type such as Car, it means Resource['car']. Later, the runtime will try to first load the type 'Car' before deciding that it must be a Resource type. (We can deal with these kinds of problems at that point though).", "created": "2015-06-25T06:26:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Merged into master in [16186ef|https://github.com/puppetlabs/puppetlabs-strings/commit/16186ef91172b79322ce270aaf0256b4352e374d]", "created": "2015-07-15T17:49:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "Notes for the future: PDOC 19 and PDOC 21 had a fair amount of overlap in terms of scope. PDOC 21 focused on building the infrastructure to compare objects and then emitting warnings on the command line if the types did not match. PDOC 19 focused on taking that type information and putting it in the generate HTML.", "created": "2015-07-21T11:50:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "[~accountid:623c17d4761efb0069ce0954]\nWhen the manifest includes a defined type as below, the parameter type is not getting reflected in the html file, instead the type is given as 'Unknown'. Is this expected ? Class definition works fine.\n\n{code}\n[root@ey7vzwhgll49tjt foo]# cat /etc/puppetlabs/code/modules/foo/manifests/init.pp\nclass foo( String $ident = \"Bob\" , Integer $age = 10, )\n{\n   notify {'$ident':}\n   notify {'$age':}\n}\n\ndefine foo::bar ( String $barname,  Float $barval )\n {\n   notify {'$barname':}\n   notify {'$barval':}\n}\n\n</div>\n<h2>Parameter Summary</h2>\n<div class=\"tags\">\n  <ul class=\"param\">\n    <li><span class=\"name\">barname </span><span class=\"type\">(<tt>Unkown</tt>)</span></li><li><span class=\"name\">barval </span><span class=\"type\">(<tt>Unkown</tt>)</span></li>\n  </ul>\n</div>\n</div>\n{code}\n", "created": "2015-07-27T16:25:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "That is not expected. It is supposed to include the type in the documentation, not Unknown. Don't think we ever want a type called {{Unknown}} to be output either. It is either typed, an error in the type specification, or nothing (implied Any, which we do not output unless it was explicit).", "created": "2015-07-27T16:30:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "Validated in puppet-strings SHA:e9167b11e6021abad522d0e1e5d41d8b1eeb63ed\n{code}\n\n[root@mlxbrgjzz0ujob6 foo]# cat /etc/puppetlabs/code/modules/foo/manifests/init.pp\nclass foo( String $ident = \"Bob\" , Integer $age = 10, )\n{\n   notify {'$ident':}\n   notify {'$age':}\n}\n\n\ndefine foo::bar ( String $barname, Float $barval)\n {\n   notify {'$barname':}\n   notify {'$barval':}\n}\n[root@mlxbrgjzz0ujob6 foo]# cat /etc/puppetlabs/code/modules/foo/manifests/baz.pp\nclass foo::baz ( String $bazname = \"Portland\" , Float $bazval = 30.5, )\n{\n   notify {'$bazname':}\n   notify {'$bazval':}\n}\n\n[root@mlxbrgjzz0ujob6 foo]#cat /etc/puppetlabs/code/modules/foo/doc/foo.html\n<title>\n  Hostclass: foo\n\n    &mdash", "created": "2015-07-29T14:16:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "[~accountid:623c17d4761efb0069ce0954] If I use a custom type like \"MyType\" in the class declaration, in the resulting html the \"T\" is getting replaced by \"t\". Not sure whether this is a valid test case.\n\n{code}\n\n[root@mlxbrgjzz0ujob6 foo]# cat manifests/init.pp\nclass foo( MyType $ident = \"Bob\" , MyInt $age = 10, )\n{\n   notify {'$ident':}\n   notify {'$age':}\n}\n\n[root@mlxbrgjzz0ujob6 foo]# cat /etc/puppetlabs/code/modules/foo/doc/foo.html\n  <ul class=\"param\">\n    <li><span class=\"name\">ident </span><span class=\"type\">(<tt>Mytype</tt>)</span><tt> => \"Bob\"</tt></li><li><span class=\"name\">age </span><span class=\"type\">(<tt>Myint</tt>)</span><tt> => 10</tt></li>\n{code}", "created": "2015-07-29T14:37:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Puppet is case independent in names except for the first letter in each segment, so it is expected that {{MyType}} becomes {{Mytype}} - both names (camel case or no camel case) is a reference to the exact same type. Idiomatic Puppet would name the type {{My_type}} if word separation was wanted.", "created": "2015-07-29T16:10:00.000000"}, {"author": "623c14e0b75ca8007056d418", "body": "[~accountid:557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd] Thanks for explaining. Resolving the ticket now.", "created": "2015-07-29T16:25:00.000000"}], "components": [], "created": "2014-11-10T11:29:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4fcf7034"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-34"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Highest Test Level", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Acceptance"}, {"fieldName": "QA Risk Probability", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Medium"}, {"fieldName": "QA Risk Probability Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "any module with defined parameter types"}, {"fieldName": "QA Risk Severity", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Low"}, {"fieldName": "QA Risk Severity Reason", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:textfield", "value": "short-cuts for users"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyola7:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "25/Jun/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_487723051_*|*_1_*:*_1_*:*_176976267_*|*_10007_*:*_1_*:*_87401451_*|*_3_*:*_5_*:*_1757000177_*|*_5_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_716927849_*|*_10006_*:*_5_*:*_19338577025"}], "description": "Derive class and define parameter types (\u201c@param name comment\u201d) from the declared type in the manifest (\u201cclass b(Type $name)\u201d)", "epicLinkSummary": "Puppet Strings 0.3.0 Release ", "estimate": "PT0S", "externalId": "32554", "fixedVersions": [], "id": "32554", "issueType": "Improvement", "key": "PDOC-19", "labels": [], "originalEstimate": "PT0S", "parent": "32593", "parentSummary": "Puppet Strings 0.3.0 Release ", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-07-29T16:26:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Derive class and define type parameters from declared type", "timeSpent": "PT0S", "updated": "2015-07-29T16:26:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [{"attacher": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "created": "2015-01-15T17:18:00.000000", "name": "testthis.png", "uri": "https://puppet.atlassian.net/rest/api/3/attachment/content/12377"}], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Tags we want to add support for: @see, @since, @param, @example, @return, @option (stretch goal)", "created": "2014-11-10T11:04:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "Others that would be good to consider for eventual implementation: {{@deprecated}}, {{@todo}}, {{@note}} and maybe even {{@private}}.", "created": "2014-12-21T14:44:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Merged PR 21 at https://github.com/puppetlabs/puppetlabs-strings/commit/345d72b2d7f75b1949d9bff1e8528807f7d8051c", "created": "2015-01-06T13:49:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "For FR, it looks like I create a manifest that uses (at least) the tags below and then validate the output HTML after running through {{puppet strings _manifest_.pp}}:\n\n* {{@example}}\n* {{@param}}\n* {{@return}}\n* {{@see}}\n* {{@since}}\n", "created": "2015-01-14T08:38:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Verified in master at SHA=345d72b2d7f75b1949d9bff1e8528807f7d8051c. {{puppet strings}} handles YARD tags {{@example}}, {{@param}}, {{@return}}, {{@see}}, and {{@since}}. Using the code here:\n{code}\n# init.pp\n# This class is just to test puppet strings yardoc\n# @param person [String] Person's name\n# @param number [Float] Person's telephone number\n# @return [Integer] A testthis object\n# @example class testthis(person, number)\n# @see http://puppet.allthethingsnow.com\n# @since The beginning of time\n# === Authors\n#\n# Author Name <kurtwall@example.com>\n#\n# === Copyright\n#\n# Copyright 2015 Bond, James Bond\n#\nclass testthis( $person = 'Jenny', $number = 867.5309) { }\n{code}\n\nI get the output in the attached image.", "created": "2015-01-15T17:17:00.000000"}, {"author": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "body": "(y) Looks great!", "created": "2015-01-20T12:20:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "TestRail test case C62457", "created": "2015-01-29T16:20:00.000000"}], "components": [], "created": "2014-10-17T18:05:00.000000", "creator": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@5c66d91b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypc6f:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "10/Nov/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_89755263_*|*_1_*:*_1_*:*_2230404919_*|*_10007_*:*_3_*:*_1045207839_*|*_3_*:*_5_*:*_3574416946_*|*_10009_*:*_1_*:*_413247896_*|*_5_*:*_2_*:*_4853531697_*|*_6_*:*_1_*:*_0_*|*_10011_*:*_1_*:*_700359015_*|*_10006_*:*_3_*:*_136576552"}], "description": "Puppet Strings currently doesn't do anything with YARD tags like {{@param}} that are used to document Classes or Defined Types. Tags are parsed and processed, but are not used when HTML output is generated.\n\nThe reason for this is, that the HTML template for Defined Types [is very sparse|https://github.com/puppetlabs/puppetlabs-strings/blob/0.1.0/lib/puppetx/puppetlabs/strings/yard/templates/default/definedtype/setup.rb#L3-L5] and does not include many sections in the output:\n\n{code}\ndef init\n  sections :header, :box_info, :pre_docstring, T('docstring'), :parameter_details\nend\n{code}\n\n(The Class template inherits behavior from the Defined Type template)\n\nCompare this to the sections used in the [YARD template for Ruby modules|https://github.com/lsegal/yard/blob/v0.8.7.4/templates/default/module/setup.rb#L3-L11]:\n\n{code}\ndef init\n  sections :header, :box_info, :pre_docstring, T('docstring'), :children,\n    :constant_summary, [T('docstring')], :inherited_constants,\n    :attribute_summary, [:item_summary], :inherited_attributes,\n    :method_summary, [:item_summary], :inherited_methods,\n    :methodmissing, [T('method_details')],\n    :attribute_details, [T('method_details')],\n    :method_details_list, [T('method_details')]\nend\n{code}\n\nWe need to decide which YARD tags to use for Class and Type documentation and add section(s) to the template that expose their content.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32382", "fixedVersions": ["PDOC 0.2.0"], "id": "32382", "issueType": "Improvement", "key": "PDOC-17", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "resolution": "Fixed", "resolutionDate": "2015-01-20T12:20:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add support for YARD tags in class and defined type documentation", "timeSpent": "PT0S", "updated": "2015-03-17T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "Yes, very much so. In particular, the current module skeleton puts out text which isn't formatted as headers. The only way I can generate proper headers is using proper markdown {{== Header}} notation rdoc-style. If I enable the {{--markup markdown}} option in {{.yardopts}} then the only thing that works is \n\n{code}\n##Header\n{code}\n\nSetext headers don't work at all -- they flow into a single long paragraph.", "created": "2015-09-07T21:35:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "Furthermore, add {{@param}} to the module skeleton as it makes the Parameter Summary significantly more useful.\n\n{code}\n# @param [Type] parameter Description of parameter\n{code}", "created": "2015-09-07T21:48:00.000000"}, {"author": "623c17d4761efb0069ce0954", "body": "[~accountid:557058:c5ea6c35-c500-4334-8131-e031af9f81a4] Your first comment really belongs in a separate bug. The Yard markdown parser is goofy, to put it politely. I may investigate replacing it with something else.\nAs for your second comment, the module skeleton provided in Puppet doesn't have any parameters by default. Maybe we should add some dummy ones and add the @param tag.", "created": "2015-09-08T11:46:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "I totally use @param in all my documentation. Look here:\n  https://rawgit.com/jorhett/puppet4-module/master/doc/puppet4.html\n\nYARD took me a bit to learn, but I've come to love all the things it enables. I'm more on the \"add more of the YARD\" syntax bandwagon right now. Like @author which totally doesn't appear in the output.\n\nIn specific I think we should fix it to handle markup without a thousand {{.yardopts}} files scattered around the repository. If you want people to migrate to markdown (yay!) make it easier. Go all the way in.", "created": "2015-09-08T13:02:00.000000"}, {"author": "557058:c5ea6c35-c500-4334-8131-e031af9f81a4", "body": "FWIW fine if you do want to use something other than YARD, but please document it better as you move forward. I had to read source to figure out how to document in YARD :(\n\nAlso FWIW, I've written it up in detail in Learning Puppet 4 for O'Reilly which goes to print in a few weeks. It would be best if we can clean up the mismash and make it easy to migrate to Markdown since this book has almost 40 pages encouraging and helping people use it.", "created": "2015-09-08T13:03:00.000000"}, {"author": "557058:0b2a0f29-3749-4fc3-9772-13ad025585de", "body": "We're creating a style guide now \\o/\nSee PDOC-186", "created": "2018-03-05T11:37:00.000000"}], "components": [], "created": "2014-10-16T17:03:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3050957c"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hymtn3:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "08/Sep/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_106774472823_*|*_6_*:*_1_*:*_0"}], "description": "We need to figure out how we want people to document their modules and ruby extensions to work with strings. We should nail down some specifics and write them up in a place where people can reference them.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32381", "fixedVersions": [], "id": "32381", "issueType": "Task", "key": "PDOC-15", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Duplicate", "resolutionDate": "2018-03-05T11:37:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Nail down specifics around suggested documentation style", "timeSpent": "PT0S", "updated": "2018-03-05T11:37:00.000000", "votes": "1", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4bee866b810069e3689a", "body": "Just for clarity, I did a {{puppet parser --parser future validate}} on the manifest in question and that passes just fine.", "created": "2014-10-12T04:30:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Hey Daniele, thanks for filing this ticket! I totally got caught up working on other things last week and forgot to get around to fixing this. I've got a pull request up which should be merged soon.", "created": "2014-10-13T09:35:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Notably this issue also suggests that we could use some more test coverage around the future parser", "created": "2014-10-13T12:22:00.000000"}, {"author": "557058:80b1a2d0-6c75-4995-bdc3-c422bab7aabd", "body": "Merged at 0a3c60a", "created": "2014-10-14T17:33:00.000000"}, {"author": "62450221ad6b7e006aa4e34c", "body": "Functional review: verified at SHA 78ba39b0:\n\nWhen running {{puppet strings}} with the future parser enabled:\n{noformat}\nroot@lze578js60y7odb:/etc/puppet/modules# puppet strings --parser future ntp\n\nFiles:           2\nModules:         1 (    1 undocumented)\nClasses:         0 (    0 undocumented)\nConstants:       1 (    1 undocumented)\nMethods:         1 (    0 undocumented)\nPuppet Classes:     0 (    0 undocumented)\nPuppet Types:     0 (    0 undocumented)\n 33.33% documented\ntrue\n{noformat}\n\nWhere previoiusly (SHA 1abca4705f), we would see:\n{noformat}\nroot@lze578js60y7odb:/etc/puppet/modules/puppetlabs-strings# puppet strings --parser future ntp\n\nError: uninitialized constant Puppet::Pops\nError: Try 'puppet help strings yardoc' for usage\n{noformat}\n", "created": "2014-10-24T12:00:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "TestRailed as test case C62460", "created": "2015-01-29T16:24:00.000000"}], "components": [], "created": "2014-10-12T04:29:00.000000", "creator": "623a4bee866b810069e3689a", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@788c54e5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyu4xz:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "13/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_63170413_*|*_1_*:*_1_*:*_112648603_*|*_10007_*:*_1_*:*_107195383_*|*_10009_*:*_1_*:*_780860034_*|*_5_*:*_1_*:*_0"}], "description": "While working on a new module that uses future parser features, and specifically the Type system to annotate parameters I ran into this:\n\n{code}\n12:20:06 ~/D/g/d/p/apt (master) $ puppet strings\n[error]: Unhandled exception in Puppetx::PuppetLabs::Strings::YARD::Handlers::DefinedTypeHandler:\n[error]:   in `manifests/conf.pp`:1:\n[.. snip .. ]\n[error]: ParseError: Syntax error at '}' at line 15:45\n[error]: Stack trace:\n\t/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/puppet-3.7.1/lib/puppet/pops/parser/parser_support.rb:113:in `on_error'\n\t/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/puppet-3.7.1/lib/puppet/pops/parser/lexer2.rb:285:in `scan'\n\t/usr/local/var/rbenv/versions/2.1.2/lib/ruby/2.1.0/racc/parser.rb:319:in `_racc_yyparse_c'\n\t/usr/local/var/rbenv/versions/2.1.2/lib/ruby/2.1.0/racc/parser.rb:319:in `yyparse'\n\t/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/puppet-3.7.1/lib/puppet/pops/parser/parser_support.rb:204:in `_parse'\n\t/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/puppet-3.7.1/lib/puppet/pops/parser/parser_support.rb:121:in `parse_string'\n\nError: Syntax error at '}' at line 17:3\nError: Try 'puppet help strings yardoc' for usage\n{code}\n\n\n-Now I can understand that error since it's using the current parser from what I can see. However, if I try to switch it to future parser:-\n\nWhen I use the {{--parser future}} flag it gets weirder.\n\n{code}\n12:21:42 ~/D/g/d/p/apt (master) $ puppet strings --parser future\nError: uninitialized constant Puppet::Pops\nError: Try 'puppet help strings yardoc' for usage\n{code}\n\nAccording to [~accountid:557058:aa277a93-6688-4f34-ad9d-e53477acf74b] that bug is just a {{require}} call in strings that needs to be flipped.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32349", "fixedVersions": ["PDOC 0.1.1"], "id": "32349", "issueType": "Bug", "key": "PDOC-14", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Major", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4bee866b810069e3689a", "resolution": "Fixed", "resolutionDate": "2014-10-24T12:00:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Doesn't work with future parser and type annotations", "timeSpent": "PT0S", "updated": "2015-01-29T16:24:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Since we don't have a lot of documentation around how to document manifests and functions, I'm going to use this ticket as a place to collect some examples temporarily. \n\nHere's a README template for modules:\nhttps://docs.puppetlabs.com/puppet/latest/reference/modules_documentation.html", "created": "2014-10-16T15:39:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Puppet style guide (although this says to use rdoc): \n\nhttps://docs.puppetlabs.com/guides/style_guide.html", "created": "2014-10-16T15:41:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Here's YARD's guide, this is probably a good reference for documenting Puppet extensions written in Ruby:\n\nhttp://www.rubydoc.info/gems/yard/file/docs/GettingStarted.md", "created": "2014-10-16T15:45:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Using YARD's meta-data tags:\n\nhttp://www.rubydoc.info/gems/yard/file/docs/Tags.md", "created": "2014-10-16T15:59:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "Merged into master in [78ba39|https://github.com/puppetlabs/puppetlabs-strings/commit/78ba39b08bc0cd7463e8f2bc011b0949f6944550].", "created": "2014-10-21T10:06:00.000000"}, {"author": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715", "body": "these helped me verify the other pdoc ticket... ", "created": "2014-10-23T17:46:00.000000"}], "components": [], "created": "2014-10-09T10:58:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@49927e18"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:e346dd15-0cb4-4ff2-a5d8-46553d04e715"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyu4wn:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "21/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_182462856_*|*_1_*:*_1_*:*_620560345_*|*_10007_*:*_1_*:*_77638253_*|*_3_*:*_1_*:*_335312872_*|*_10009_*:*_1_*:*_17934599_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_161655"}], "description": "Have some examples we can point to of the desired way to document modules when using Puppet Strings.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32347", "fixedVersions": ["PDOC 0.1.1"], "id": "32347", "issueType": "Task", "key": "PDOC-13", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2014-10-23T17:46:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Put together examples of how to document modules", "timeSpent": "PT0S", "updated": "2014-10-23T17:47:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:11a50a90-5585-4229-994a-72322be4a7d7", "body": "CentOS 6 and RedHat 6 can use Software Collections for Ruby 1.9: http://wiki.centos.org/AdditionalResources/Repositories/SCL", "created": "2014-10-07T13:11:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "I know. Many locations still won't support it though. They're usually the same places that don't like EPEL (wonderful people).\n\nI mainly wanted to get it on the radar so that the decision could be officially recorded when people complain about it later.", "created": "2014-10-07T13:15:00.000000"}, {"author": "623a4bee866b810069e3689a", "body": "I think we shouldn't support 1.8.7 anymore for new stuff. This is a new tool, still very much in development. Yes it's supposed to replace {{doc}} in due time but I think it's perfectly acceptable at this point to tell people \"You need 1.9 to generate the documentation\".\n\nSince this doesn't necessarily need to be done on a Puppet master, heck it should probably be done on your local workstation and ship it into the {{gh-pages}} branch of your module, I see no reason why this can't be 1.9+.", "created": "2014-10-12T04:27:00.000000"}, {"author": "623a4744a95758006959fe55", "body": "If the answer is \"use the ruby193 SCL\" then shouldn't the OSS puppet packages be installing into the ruby193 SCL? :)", "created": "2014-10-14T09:05:00.000000"}, {"author": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "body": "+1 to Joshua's comment.\n\nThere was a thread going on about using an AIO package but that might mean a lot of people are going to have to roll their own anyway for various reasons.\n\nI'll go poke that thread and see what's going on.", "created": "2014-12-07T16:31:00.000000"}, {"author": "557058:aa277a93-6688-4f34-ad9d-e53477acf74b", "body": "The {{puppet-strings}} project was initiated because the current documentation functionality for manifests provided by {{puppet doc}} will be broken when Puppet 4.0 ships. This is because {{puppet doc}} is tightly integrated with the current parser which has already been removed in the {{master}} branch that will become Puppet 4.\n\nAdditionally, Puppet 4.0 will be dropping support for Ruby 1.8.7. This situation is compounded by the fact that YARD requires building out entirely new and separate code in order to support parsing Ruby code when running under 1.8.7 (Ruby 1.8.x doesn't include the Ripper library). This means that {{puppet-strings}} would have to implement and maintain two parsers for Functions, Types, Providers, etc. Supporting and maintaining Ruby 1.8.7 in {{puppet-strings}} would require a non-trivial amount of development.\n\nGiven that the goal of this project is to support Puppet 4.0 and newer, {{puppet-strings}} will only be compatible Ruby versions supported by Puppet 4.0.", "created": "2014-12-07T21:45:00.000000"}], "components": [], "created": "2014-10-07T12:14:00.000000", "creator": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@7ccc84cd"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hywmfr:"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "07/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_5308299670_*|*_6_*:*_1_*:*_0"}], "description": "Many organizations will not allow deviations from the vendor installed version of Ruby. This is still 1.8.7 in Red Hat and CentOS 6.", "environment": "Any", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32416", "fixedVersions": [], "id": "32416", "issueType": "Bug", "key": "PDOC-12", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "557058:e0340dee-9d48-48c3-8c6a-02597af847c9", "resolution": "Won't Fix", "resolutionDate": "2014-12-07T21:45:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Strings should support Ruby 1.8.7", "timeSpent": "PT0S", "updated": "2014-12-07T21:45:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "62450221ad6b7e006aa4e34c", "body": "Errors and warnings are now well covered at the spec level. Closing this out.", "created": "2016-11-03T13:50:00.000000"}], "components": [], "created": "2014-10-06T16:32:00.000000", "creator": "623a4c3b4a57610068e6782b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@737c145b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Capitalized?", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Yes"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hylw13:"}, {"fieldName": "Scrum Team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Language"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Nov/16"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_769751234_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_64798167668"}], "description": "PDOC-9 was supposed to add both a happy and a sad path case. However, it was only able to achieve a happy path case. There is still a need for a sad path system test.\n\n  * install puppetlabs-string\n  * generate documentation that results in an error (not a module or maybe a module with syntax errors)\n  * assert that the error is reported to the user\n", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32415", "fixedVersions": [], "id": "32415", "issueType": "Task", "key": "PDOC-11", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4c3b4a57610068e6782b", "resolution": "Fixed", "resolutionDate": "2016-11-03T13:50:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add sad path system test", "timeSpent": "PT0S", "updated": "2017-05-31T07:20:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4c3b4a57610068e6782b", "body": "Merged PR 12 into master in [bf24ae2|https://github.com/puppetlabs/puppetlabs-strings/commit/bf24ae2092af76da515f2666de7f7d59269c5010].", "created": "2014-10-03T16:09:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "Merged PR 11 into master in [b07fc4|https://github.com/puppetlabs/puppetlabs-strings/commit/b07fc4a661805be669e0dd8ef6f69f5305b9dc6b]", "created": "2014-10-03T18:16:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "No need for FR. These were all documentation changes.", "created": "2014-10-03T18:17:00.000000"}], "components": [], "created": "2014-09-24T17:01:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@737e5ae6"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-4"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyw6q7:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "03/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_24683_*|*_1_*:*_1_*:*_149045439_*|*_10007_*:*_1_*:*_180924479_*|*_3_*:*_2_*:*_344464048_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_2_*:*_107711150"}], "description": "Since this project is becoming more visible to the community, we should update the README to be a little bit more helpful and include some more specific details. ", "epicLinkSummary": "Set up puppet strings as a sustainable long-term project", "estimate": "PT0S", "externalId": "32345", "fixedVersions": ["PDOC 0.1.0"], "id": "32345", "issueType": "Task", "key": "PDOC-10", "labels": [], "originalEstimate": "PT0S", "parent": "32357", "parentSummary": "Set up puppet strings as a sustainable long-term project", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2014-10-03T18:17:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Update README to be more helpful/verbose", "timeSpent": "PT0S", "updated": "2014-10-03T18:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4c3b4a57610068e6782b", "body": "Merged happy path test case into master in [67c42a|https://github.com/puppetlabs/puppetlabs-strings/commit/67c42a2f49033d589db1c6e60cc06f5fea1c14bf]", "created": "2014-10-06T16:30:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "The PR only created the happy path case. I've opened PDOC-11 to add the sad path.", "created": "2014-10-06T16:32:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "No FR. Just a new automated test.", "created": "2014-10-06T17:22:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "TestRailed as test case C62470", "created": "2015-01-29T17:05:00.000000"}], "components": [], "created": "2014-09-04T15:02:00.000000", "creator": "623a4c3b4a57610068e6782b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@4f7321f2"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-4"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyw6r3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "30/Jan/15"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_2956736_*|*_1_*:*_1_*:*_2330046049_*|*_10007_*:*_1_*:*_18362686_*|*_3_*:*_1_*:*_415402931_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_6424353"}], "description": "There needs to be at least on full-system test. \n\nOne test is:\n\n  * install the puppetlabs-strings module (built in an earlier stage of CI)\n  * install other modules that contain items to document:\n    * manifests (yard markup)\n    * functions (3x and 4x)\n  * generate documentation for those modules\n  * assert that the generated pages contain the correct information\n\nAnother test is:\n\n  * install puppetlabs-string\n  * generate documentation that results in an error (not a module or maybe a module with syntax errors)\n  * assert that the error is reported to the user", "epicLinkSummary": "Set up puppet strings as a sustainable long-term project", "estimate": "PT0S", "externalId": "32590", "fixedVersions": ["PDOC 0.1.0"], "id": "32590", "issueType": "Task", "key": "PDOC-9", "labels": [], "originalEstimate": "PT0S", "parent": "32357", "parentSummary": "Set up puppet strings as a sustainable long-term project", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4c3b4a57610068e6782b", "resolution": "Fixed", "resolutionDate": "2014-10-06T17:22:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Create basic full system test", "timeSpent": "PT0S", "updated": "2015-01-29T17:05:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "557058:91233464-4152-4228-81dd-172d43a52a03", "body": "Merged in [adae47b|https://github.com/puppetlabs/puppetlabs-strings/commit/adae47b90fd0dce48c8d00e1dad786690820d91e] to be released in 0.2.0", "created": "2014-10-14T17:29:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Dealt with in spec", "created": "2015-01-29T16:25:00.000000"}], "components": [], "created": "2014-09-04T14:53:00.000000", "creator": "623a4c3b4a57610068e6782b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@3f44f8e5"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-4"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypnpb:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "14/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_63317439_*|*_1_*:*_1_*:*_2330601252_*|*_10007_*:*_1_*:*_523085985_*|*_3_*:*_1_*:*_103408314_*|*_10009_*:*_1_*:*_7566700_*|*_5_*:*_1_*:*_13233907281_*|*_6_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_508385559"}], "description": "To keep a consistent code quality there need to be some static checks using rubocop. These should run as part of the spec test suite.", "epicLinkSummary": "Set up puppet strings as a sustainable long-term project", "estimate": "PT0S", "externalId": "32574", "fixedVersions": ["PDOC 0.2.0"], "id": "32574", "issueType": "Task", "key": "PDOC-8", "labels": [], "originalEstimate": "PT0S", "parent": "32357", "parentSummary": "Set up puppet strings as a sustainable long-term project", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4c3b4a57610068e6782b", "resolution": "Fixed", "resolutionDate": "2014-10-15T13:12:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Check for code style and static problems with rubocop", "timeSpent": "PT0S", "updated": "2015-03-17T17:17:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623a4c3b4a57610068e6782b", "body": "Merged into master in [e2e288|https://github.com/puppetlabs/puppetlabs-strings/commit/e2e2880473d7950de77e45519e43000783c07b9d].", "created": "2014-09-26T13:12:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Skipping functional review since there was no change to the source code itself", "created": "2014-10-01T10:08:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "No testing required for Travis.", "created": "2015-01-29T17:03:00.000000"}], "components": [], "created": "2014-09-04T14:52:00.000000", "creator": "623a4c3b4a57610068e6782b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@53dd5496"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-4"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypokv:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_420937635_*|*_1_*:*_1_*:*_1729533549_*|*_10007_*:*_1_*:*_159790659_*|*_3_*:*_1_*:*_5435120_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_86531"}], "description": "The PRs against the project should be tested using travis to give early feedback on any problems.", "epicLinkSummary": "Set up puppet strings as a sustainable long-term project", "estimate": "PT0S", "externalId": "32528", "fixedVersions": ["PDOC 0.1.0"], "id": "32528", "issueType": "Task", "key": "PDOC-7", "labels": [], "originalEstimate": "PT0S", "parent": "32357", "parentSummary": "Set up puppet strings as a sustainable long-term project", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4c3b4a57610068e6782b", "resolution": "Fixed", "resolutionDate": "2014-10-01T10:08:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Setup project to test pull requests with travis", "timeSpent": "PT0S", "updated": "2015-01-29T17:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Skipping functional review since there was no change to the source code, just a CI job added and the Gemfile updated", "created": "2014-10-01T10:06:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "No additional test necessary", "created": "2015-01-29T17:03:00.000000"}], "components": [], "created": "2014-09-04T14:51:00.000000", "creator": "623a4c3b4a57610068e6782b", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@17fbea35"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-4"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyvln3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "1.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "01/Oct/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_21437057_*|*_1_*:*_1_*:*_1123532811_*|*_10007_*:*_1_*:*_68770467_*|*_3_*:*_1_*:*_15927739_*|*_10009_*:*_1_*:*_4099157_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_589872395"}], "description": "The project needs to have its spec tests run continuously against several versions of puppet (whatever it is supporting at the time).", "epicLinkSummary": "Set up puppet strings as a sustainable long-term project", "estimate": "PT0S", "externalId": "32496", "fixedVersions": ["PDOC 0.1.0"], "id": "32496", "issueType": "Task", "key": "PDOC-6", "labels": [], "originalEstimate": "PT0S", "parent": "32357", "parentSummary": "Set up puppet strings as a sustainable long-term project", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623a4c3b4a57610068e6782b", "resolution": "Fixed", "resolutionDate": "2014-09-25T17:25:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Create jenkins job to run spec tests", "timeSpent": "PT0S", "updated": "2015-01-29T17:03:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "201600", "aggregatetimeoriginalestimate": "345600", "aggregatetimespent": "57600", "assignee": null, "attachments": [], "comments": [], "components": [], "created": "2014-09-03T14:34:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@142f1b4b"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Color", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-color", "value": "ghx-label-4"}, {"fieldName": "Epic Name", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-label", "value": "Puppet Strings Project Creation"}, {"fieldName": "Epic Status", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-status", "value": "To Do"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "Issue color", "fieldType": "com.pyxis.greenhopper.jira:jsw-issue-color", "value": "dark_blue"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hyw67j:"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_24262_*|*_6_*:*_1_*:*_0_*|*_10013_*:*_1_*:*_18843908893_*|*_10006_*:*_1_*:*_412900649"}], "description": "Since puppet strings began as a prototype, there is some work that must be done in order to promote it to long-term project status. For example, it needs tests, a build pipeline, and some of the code needs to be cleaned up.", "epicLinkSummary": null, "estimate": "PT0S", "externalId": "32357", "fixedVersions": [], "id": "32357", "issueType": "Epic", "key": "PDOC-4", "labels": [], "originalEstimate": "PT0S", "parent": null, "parentSummary": null, "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2015-04-14T11:41:00.000000", "status": "Closed", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Set up puppet strings as a sustainable long-term project", "timeSpent": "PT0S", "updated": "2015-04-28T16:59:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "115200", "aggregatetimeoriginalestimate": "115200", "assignee": null, "attachments": [], "comments": [{"author": "623cffe88d8b9c0068b93ebf", "body": "Due to the size of some of these refactors, there will be more than one pull request for this ticket. ", "created": "2014-09-15T12:16:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "PR 4 merged into master in [6fb4a3|https://github.com/puppetlabs/puppetlabs-strings/commit/6fb4a39536bcc8e41e824cd357083841095f2304]", "created": "2014-09-17T11:33:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "Merged PR 7 into master in [970b60|https://github.com/puppetlabs/puppetlabs-strings/commit/970b60481fb181112e2890a7dbbc0dd451a942c5]", "created": "2014-09-30T15:59:00.000000"}, {"author": "623cffe88d8b9c0068b93ebf", "body": "Skipping functional review since this is just a refactor and there was no change in functionality", "created": "2014-10-01T10:05:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "TestRailed as test case C62469", "created": "2015-01-29T17:02:00.000000"}], "components": [], "created": "2014-09-03T14:30:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1f407e54"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-4"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypol3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "17/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "null_*:*_1_*:*_0_*|*_10008_*:*_1_*:*_65183630_*|*_1_*:*_1_*:*_251526_*|*_10007_*:*_2_*:*_274646584_*|*_3_*:*_4_*:*_814859785_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_3_*:*_1006559444"}], "description": "Since puppet strings began as a prototype, the way some of the code is written is not very clear and could be more explicit and readable. We should spend some time going through and tidying up the code.", "epicLinkSummary": "Set up puppet strings as a sustainable long-term project", "estimate": "PT115200S", "externalId": "32589", "fixedVersions": ["PDOC 0.1.0"], "id": "32589", "issueType": "Improvement", "key": "PDOC-3", "labels": [], "originalEstimate": "PT115200S", "parent": "32357", "parentSummary": "Set up puppet strings as a sustainable long-term project", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2014-10-01T10:05:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Refactor prototype to make code more readable", "timeSpent": "PT0S", "updated": "2015-01-29T17:02:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeestimate": "86400", "aggregatetimeoriginalestimate": "86400", "assignee": "623a4c3b4a57610068e6782b", "attachments": [], "comments": [{"author": "623a4c3b4a57610068e6782b", "body": "Merged into master in [ac3bbb|https://github.com/puppetlabs/puppetlabs-strings/commit/ac3bbbd4d2f3071ed6aec3782782f9fd7e453b64]", "created": "2014-09-15T12:03:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "Skipping ready for CI and functional review since this is just adding automated test coverage.", "created": "2014-09-15T12:04:00.000000"}], "components": [], "created": "2014-09-03T14:24:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@1a06422a"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-4"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hytxf3:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "2.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "15/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "1_*:*_1_*:*_36557_*|*_10007_*:*_1_*:*_482665871_*|*_3_*:*_1_*:*_540343406_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_5328397"}], "description": "In order turn puppet strings into a sustainable project, continue to improve the spec tests coverage. Specifically, add some testing around the face component which tests a puppet yardoc run from beginning to end. This will involve setting up some sample modules and ensuring that the HTML output is what we expect.", "epicLinkSummary": "Set up puppet strings as a sustainable long-term project", "estimate": "PT86400S", "externalId": "32553", "fixedVersions": ["PDOC 0.1.0"], "id": "32553", "issueType": "Improvement", "key": "PDOC-2", "labels": [], "originalEstimate": "PT86400S", "parent": "32357", "parentSummary": "Set up puppet strings as a sustainable long-term project", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2014-09-15T12:04:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add high level spec tests", "timeSpent": "PT0S", "updated": "2015-01-29T16:50:00.000000", "votes": "0", "watchers": []}, {"affectedVersions": [], "aggregatetimeoriginalestimate": "144000", "aggregatetimespent": "57600", "assignee": null, "attachments": [], "comments": [{"author": "623a4c3b4a57610068e6782b", "body": "Merged into master in commit [39f4ca|https://github.com/puppetlabs/puppetlabs-strings/commit/39f4ca1d097bf379c08f1af63d85dddd1fe346c1].", "created": "2014-09-04T11:24:00.000000"}, {"author": "623a4c3b4a57610068e6782b", "body": "I'm skipping this through to resolved since there aren't any Jenkins jobs setup yet for this project (tickets are filed to create that). It also skips over function review since there isn't really any functionality, just an initial pass at getting automated test coverage.", "created": "2014-09-08T11:29:00.000000"}, {"author": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a", "body": "Covered in specs. :)", "created": "2015-01-29T16:50:00.000000"}], "components": [], "created": "2014-08-19T11:55:00.000000", "creator": "623cffe88d8b9c0068b93ebf", "customFieldValues": [{"fieldName": "Sub-team", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Approvals", "fieldType": "com.atlassian.servicedesk.approvals-plugin:sd-approvals", "value": "com.atlassian.servicedesk.plugins.approvals.internal.customfield.ApprovalsCFValue@f5726bf"}, {"fieldName": "Epic/Theme", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:labels", "value": []}, {"fieldName": "Epic Link", "fieldType": "com.pyxis.greenhopper.jira:gh-epic-link", "value": "PDOC-4"}, {"fieldName": "People Involved", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker", "value": []}, {"fieldName": "Flagged", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes", "value": []}, {"fieldName": "QA Contact", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker", "value": "557058:5f73e620-a5f5-44a8-a863-f1e0061b987a"}, {"fieldName": "QA Status", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:select", "value": "Reviewed"}, {"fieldName": "Rank", "fieldType": "com.pyxis.greenhopper.jira:gh-lexo-rank", "value": "0|hypq4f:"}, {"fieldName": "Story Points", "fieldType": "com.atlassian.jira.plugin.system.customfieldtypes:float", "value": "3.0"}, {"fieldName": "[CHART] Date of First Response", "fieldType": "com.atlassian.jira.ext.charting:firstresponsedate", "value": "04/Sep/14"}, {"fieldName": "[CHART] Time in Status", "fieldType": "com.atlassian.jira.ext.charting:timeinstatus", "value": "10008_*:*_1_*:*_345898404_*|*_1_*:*_1_*:*_102882_*|*_10007_*:*_1_*:*_76293763_*|*_3_*:*_1_*:*_1200343424_*|*_5_*:*_1_*:*_0_*|*_10006_*:*_1_*:*_103756226"}], "description": "Since the puppet strings feature was originally a prototype, it currently does not have any tests written. Some spec tests need to be added to ensure that the project is sustainable.\n\nhttps://github.com/puppetlabs/puppetlabs-strings", "epicLinkSummary": "Set up puppet strings as a sustainable long-term project", "estimate": "PT0S", "externalId": "32526", "fixedVersions": ["PDOC 0.1.0"], "id": "32526", "issueType": "Improvement", "key": "PDOC-5", "labels": [], "originalEstimate": "PT144000S", "parent": "32357", "parentSummary": "Set up puppet strings as a sustainable long-term project", "priority": "Normal", "projectDescription": null, "projectKey": "PDOC", "projectLead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "projectName": "Puppet Strings", "projectType": "software", "projectUrl": null, "reporter": "623cffe88d8b9c0068b93ebf", "resolution": "Fixed", "resolutionDate": "2014-09-08T11:29:00.000000", "status": "Resolved", "statusCategory": "Done", "statuscategorychangedate": "11/Mar/23 9:43 AM", "summary": "Add spec tests for puppet strings", "updated": "2015-01-29T16:50:00.000000", "votes": "0", "watchers": [], "worklogs": [{"author": "623cffe88d8b9c0068b93ebf", "startDate": "2014-08-21T10:45:00.000000", "timeSpent": "PT57600S"}]}], "key": "PDOC", "lead": "70121:199f31c7-67c7-42b0-b148-18ad3a391ab0", "name": "Puppet Strings", "template": "com.pyxis.greenhopper.jira:gh-simplified-scrum-classic", "type": "software", "url": "", "versions": [{"name": "PDOC 0.1.0", "releaseDate": "2014-10-07", "released": true}, {"name": "PDOC 0.2.0", "releaseDate": "2015-03-16", "released": true}, {"name": "PDOC 0.1.1", "releaseDate": "2014-10-21", "released": true}, {"name": "PDOC 1.0.0", "releaseDate": "", "released": false}, {"name": "PDOC 0.3.0", "releaseDate": "2015-09-21", "released": true}, {"name": "PDOC 0.3.1", "releaseDate": "2015-09-22", "released": true}, {"name": "PDOC 0.4.0", "releaseDate": "2016-03-29", "released": true}, {"name": "PDOC 0.5.0", "releaseDate": "", "released": false}, {"name": "PDOC 0.99.0", "releaseDate": "2016-10-10", "released": false}, {"name": "PDOC 0.99.1", "releaseDate": "", "released": false}, {"name": "PDOC 1.0.1", "releaseDate": "", "released": false}, {"name": "PDOC 1.1.0", "releaseDate": "", "released": false}, {"name": "PDOC 1.1.1", "releaseDate": "", "released": false}, {"name": "2.0.0", "releaseDate": "", "released": false}, {"name": "1.2.0", "releaseDate": "", "released": false}, {"name": "1.2.1", "releaseDate": "", "released": false}, {"name": "connectLA", "releaseDate": "", "released": false}, {"name": "Connect LA", "releaseDate": "2021-04-16", "released": true}]}]}