Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a dry run mode - #9

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run
Aug 7, 2017
Merged

Create a dry run mode#9
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #8.

Creates a dry run mode which prints out the actions to be taken but does not create or update anything.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation will not scale and will introduce bugs going forward. please refer to the comment for a description on the correct path forward regarding parameterizing functions for dry-runs. Also, please squash the dry-run commits so they are easier to review and separate the description length bug-fix into its own PR.

Comment threadcmd/root.go
}
if fields.Description != "" {
log.Infof(" Description: %s...", fields.Description[0:20])
if len(fields.Description) > 20 {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seem unrelated to the dry-run option. Separate this into it's own PR so we can track and revert dry-run changes separately from this bug fix.

Comment threadcmd/root.go Outdated
if err != nil {
log.Errorf("Error updating JIRA issue %s: %s", jIssue.Key, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

handle this error

Comment threadcmd/root.go
}

issue, res, err := jClient.Issue.Update(issue)
if !dryRun {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this will not scale well and will get unmanageable quite fast. the behavior of this function is now being drastically altered by a variable that is not a param. Testing this is messy and ensuring correctness becomes increasingly difficult to reason about. The correct way to do this is for all of these functions to be methods on a issue-sync config struct that encapsulates all the configuration, including dry-run. These methods then operate on a method receiver that holds all the information needed to control the operation of the function. Either that, or all of these methods take an additional parameter dryRun.

@MorganEPatch

MorganEPatch commented Aug 2, 2017

Copy link
Copy Markdown
ContributorAuthor

This functionality is now replicated in #15. We may be able to simply close this PR. Let me check...

EDIT: No, I think it may just be easier to merge this anyway. There's a handful of changes here that do need to propagate upward.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR needs work. The dryRun option still uses if/else everywhere to determine what functionality to execute rather than two different structs that implement the same interface. I realize that is coming in #15, but that work should really just have been written in this PR. Also, all the configuration is floating around in global variables still. Lets get this merged quickly so we can get the fixes implemented ASAP. That will give us more sanity. Please take a look at the few comments and then lets merge.

Comment threadcmd/root.go
if fields.Description != "" {
fields.Description = newlineReplaceRegex.ReplaceAllString(fields.Description, "\\n")
if len(fields.Description) > 20 {
log.Infof(" Description: %s...", fields.Description[0:20])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do some of these have leading whitespace?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fields all have whitespace for clarity. All the dry-runs print:

Doing action
Field1: ...
Field2: ...

Comment threadcmd/root.go Outdated
if !dryRun {
req, err := jClient.NewRequest("PUT", fmt.Sprintf("rest/api/2/issue/%s/comment/%s", jIssue.Key, jComment.ID), request)
if err != nil {
log.Errorf("Error creating comment update request: %s", err)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use %v

Comment threadcmd/root.go

project jira.Project

dryRun bool

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be a field on a config struct, not a global variable.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome. pleas squash and then shipit

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

I realize that is coming in #15, but that work should really just have been written in this PR.

Okay. I just felt that that would be too much all in one PR, especially since it depended on the config struct as well, which is also its own big changes.

When passing --dry-run or -d to the command, it will print out the
list of actions that it would take, but will not send any create
or update requests to the servers.
@MorganEPatch
MorganEPatch merged commit e1c6698 into coreos:masterAug 7, 2017
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MorganEPatch@squat
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Create a dry run mode by MorganEPatch · Pull Request #9 · coreos/issue-sync · GitHub
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a dry run mode - #9

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run
Aug 7, 2017
Merged

Create a dry run mode#9
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #8.

Creates a dry run mode which prints out the actions to be taken but does not create or update anything.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation will not scale and will introduce bugs going forward. please refer to the comment for a description on the correct path forward regarding parameterizing functions for dry-runs. Also, please squash the dry-run commits so they are easier to review and separate the description length bug-fix into its own PR.

Comment threadcmd/root.go
}
if fields.Description != "" {
log.Infof(" Description: %s...", fields.Description[0:20])
if len(fields.Description) > 20 {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seem unrelated to the dry-run option. Separate this into it's own PR so we can track and revert dry-run changes separately from this bug fix.

Comment threadcmd/root.go Outdated
if err != nil {
log.Errorf("Error updating JIRA issue %s: %s", jIssue.Key, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

handle this error

Comment threadcmd/root.go
}

issue, res, err := jClient.Issue.Update(issue)
if !dryRun {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this will not scale well and will get unmanageable quite fast. the behavior of this function is now being drastically altered by a variable that is not a param. Testing this is messy and ensuring correctness becomes increasingly difficult to reason about. The correct way to do this is for all of these functions to be methods on a issue-sync config struct that encapsulates all the configuration, including dry-run. These methods then operate on a method receiver that holds all the information needed to control the operation of the function. Either that, or all of these methods take an additional parameter dryRun.

@MorganEPatch

MorganEPatch commented Aug 2, 2017

Copy link
Copy Markdown
ContributorAuthor

This functionality is now replicated in #15. We may be able to simply close this PR. Let me check...

EDIT: No, I think it may just be easier to merge this anyway. There's a handful of changes here that do need to propagate upward.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR needs work. The dryRun option still uses if/else everywhere to determine what functionality to execute rather than two different structs that implement the same interface. I realize that is coming in #15, but that work should really just have been written in this PR. Also, all the configuration is floating around in global variables still. Lets get this merged quickly so we can get the fixes implemented ASAP. That will give us more sanity. Please take a look at the few comments and then lets merge.

Comment threadcmd/root.go
if fields.Description != "" {
fields.Description = newlineReplaceRegex.ReplaceAllString(fields.Description, "\\n")
if len(fields.Description) > 20 {
log.Infof(" Description: %s...", fields.Description[0:20])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do some of these have leading whitespace?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fields all have whitespace for clarity. All the dry-runs print:

Doing action
Field1: ...
Field2: ...

Comment threadcmd/root.go Outdated
if !dryRun {
req, err := jClient.NewRequest("PUT", fmt.Sprintf("rest/api/2/issue/%s/comment/%s", jIssue.Key, jComment.ID), request)
if err != nil {
log.Errorf("Error creating comment update request: %s", err)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use %v

Comment threadcmd/root.go

project jira.Project

dryRun bool

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be a field on a config struct, not a global variable.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome. pleas squash and then shipit

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

I realize that is coming in #15, but that work should really just have been written in this PR.

Okay. I just felt that that would be too much all in one PR, especially since it depended on the config struct as well, which is also its own big changes.

When passing --dry-run or -d to the command, it will print out the
list of actions that it would take, but will not send any create
or update requests to the servers.
@MorganEPatch
MorganEPatch merged commit e1c6698 into coreos:masterAug 7, 2017
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MorganEPatch@squat
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Create a dry run mode by MorganEPatch · Pull Request #9 · coreos/issue-sync · GitHub
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a dry run mode - #9

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run
Aug 7, 2017
Merged

Create a dry run mode#9
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #8.

Creates a dry run mode which prints out the actions to be taken but does not create or update anything.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation will not scale and will introduce bugs going forward. please refer to the comment for a description on the correct path forward regarding parameterizing functions for dry-runs. Also, please squash the dry-run commits so they are easier to review and separate the description length bug-fix into its own PR.

Comment threadcmd/root.go
}
if fields.Description != "" {
log.Infof(" Description: %s...", fields.Description[0:20])
if len(fields.Description) > 20 {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seem unrelated to the dry-run option. Separate this into it's own PR so we can track and revert dry-run changes separately from this bug fix.

Comment threadcmd/root.go Outdated
if err != nil {
log.Errorf("Error updating JIRA issue %s: %s", jIssue.Key, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

handle this error

Comment threadcmd/root.go
}

issue, res, err := jClient.Issue.Update(issue)
if !dryRun {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this will not scale well and will get unmanageable quite fast. the behavior of this function is now being drastically altered by a variable that is not a param. Testing this is messy and ensuring correctness becomes increasingly difficult to reason about. The correct way to do this is for all of these functions to be methods on a issue-sync config struct that encapsulates all the configuration, including dry-run. These methods then operate on a method receiver that holds all the information needed to control the operation of the function. Either that, or all of these methods take an additional parameter dryRun.

@MorganEPatch

MorganEPatch commented Aug 2, 2017

Copy link
Copy Markdown
ContributorAuthor

This functionality is now replicated in #15. We may be able to simply close this PR. Let me check...

EDIT: No, I think it may just be easier to merge this anyway. There's a handful of changes here that do need to propagate upward.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR needs work. The dryRun option still uses if/else everywhere to determine what functionality to execute rather than two different structs that implement the same interface. I realize that is coming in #15, but that work should really just have been written in this PR. Also, all the configuration is floating around in global variables still. Lets get this merged quickly so we can get the fixes implemented ASAP. That will give us more sanity. Please take a look at the few comments and then lets merge.

Comment threadcmd/root.go
if fields.Description != "" {
fields.Description = newlineReplaceRegex.ReplaceAllString(fields.Description, "\\n")
if len(fields.Description) > 20 {
log.Infof(" Description: %s...", fields.Description[0:20])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do some of these have leading whitespace?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fields all have whitespace for clarity. All the dry-runs print:

Doing action
Field1: ...
Field2: ...

Comment threadcmd/root.go Outdated
if !dryRun {
req, err := jClient.NewRequest("PUT", fmt.Sprintf("rest/api/2/issue/%s/comment/%s", jIssue.Key, jComment.ID), request)
if err != nil {
log.Errorf("Error creating comment update request: %s", err)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use %v

Comment threadcmd/root.go

project jira.Project

dryRun bool

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be a field on a config struct, not a global variable.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome. pleas squash and then shipit

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

I realize that is coming in #15, but that work should really just have been written in this PR.

Okay. I just felt that that would be too much all in one PR, especially since it depended on the config struct as well, which is also its own big changes.

When passing --dry-run or -d to the command, it will print out the
list of actions that it would take, but will not send any create
or update requests to the servers.
@MorganEPatch
MorganEPatch merged commit e1c6698 into coreos:masterAug 7, 2017
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MorganEPatch@squat
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Create a dry run mode by MorganEPatch · Pull Request #9 · coreos/issue-sync · GitHub
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a dry run mode - #9

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run
Aug 7, 2017
Merged

Create a dry run mode#9
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #8.

Creates a dry run mode which prints out the actions to be taken but does not create or update anything.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation will not scale and will introduce bugs going forward. please refer to the comment for a description on the correct path forward regarding parameterizing functions for dry-runs. Also, please squash the dry-run commits so they are easier to review and separate the description length bug-fix into its own PR.

Comment threadcmd/root.go
}
if fields.Description != "" {
log.Infof(" Description: %s...", fields.Description[0:20])
if len(fields.Description) > 20 {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seem unrelated to the dry-run option. Separate this into it's own PR so we can track and revert dry-run changes separately from this bug fix.

Comment threadcmd/root.go Outdated
if err != nil {
log.Errorf("Error updating JIRA issue %s: %s", jIssue.Key, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

handle this error

Comment threadcmd/root.go
}

issue, res, err := jClient.Issue.Update(issue)
if !dryRun {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this will not scale well and will get unmanageable quite fast. the behavior of this function is now being drastically altered by a variable that is not a param. Testing this is messy and ensuring correctness becomes increasingly difficult to reason about. The correct way to do this is for all of these functions to be methods on a issue-sync config struct that encapsulates all the configuration, including dry-run. These methods then operate on a method receiver that holds all the information needed to control the operation of the function. Either that, or all of these methods take an additional parameter dryRun.

@MorganEPatch

MorganEPatch commented Aug 2, 2017

Copy link
Copy Markdown
ContributorAuthor

This functionality is now replicated in #15. We may be able to simply close this PR. Let me check...

EDIT: No, I think it may just be easier to merge this anyway. There's a handful of changes here that do need to propagate upward.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR needs work. The dryRun option still uses if/else everywhere to determine what functionality to execute rather than two different structs that implement the same interface. I realize that is coming in #15, but that work should really just have been written in this PR. Also, all the configuration is floating around in global variables still. Lets get this merged quickly so we can get the fixes implemented ASAP. That will give us more sanity. Please take a look at the few comments and then lets merge.

Comment threadcmd/root.go
if fields.Description != "" {
fields.Description = newlineReplaceRegex.ReplaceAllString(fields.Description, "\\n")
if len(fields.Description) > 20 {
log.Infof(" Description: %s...", fields.Description[0:20])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do some of these have leading whitespace?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fields all have whitespace for clarity. All the dry-runs print:

Doing action
Field1: ...
Field2: ...

Comment threadcmd/root.go Outdated
if !dryRun {
req, err := jClient.NewRequest("PUT", fmt.Sprintf("rest/api/2/issue/%s/comment/%s", jIssue.Key, jComment.ID), request)
if err != nil {
log.Errorf("Error creating comment update request: %s", err)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use %v

Comment threadcmd/root.go

project jira.Project

dryRun bool

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be a field on a config struct, not a global variable.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome. pleas squash and then shipit

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

I realize that is coming in #15, but that work should really just have been written in this PR.

Okay. I just felt that that would be too much all in one PR, especially since it depended on the config struct as well, which is also its own big changes.

When passing --dry-run or -d to the command, it will print out the
list of actions that it would take, but will not send any create
or update requests to the servers.
@MorganEPatch
MorganEPatch merged commit e1c6698 into coreos:masterAug 7, 2017
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MorganEPatch@squat
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Create a dry run mode by MorganEPatch · Pull Request #9 · coreos/issue-sync · GitHub
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a dry run mode - #9

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run
Aug 7, 2017
Merged

Create a dry run mode#9
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #8.

Creates a dry run mode which prints out the actions to be taken but does not create or update anything.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation will not scale and will introduce bugs going forward. please refer to the comment for a description on the correct path forward regarding parameterizing functions for dry-runs. Also, please squash the dry-run commits so they are easier to review and separate the description length bug-fix into its own PR.

Comment threadcmd/root.go
}
if fields.Description != "" {
log.Infof(" Description: %s...", fields.Description[0:20])
if len(fields.Description) > 20 {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seem unrelated to the dry-run option. Separate this into it's own PR so we can track and revert dry-run changes separately from this bug fix.

Comment threadcmd/root.go Outdated
if err != nil {
log.Errorf("Error updating JIRA issue %s: %s", jIssue.Key, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

handle this error

Comment threadcmd/root.go
}

issue, res, err := jClient.Issue.Update(issue)
if !dryRun {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this will not scale well and will get unmanageable quite fast. the behavior of this function is now being drastically altered by a variable that is not a param. Testing this is messy and ensuring correctness becomes increasingly difficult to reason about. The correct way to do this is for all of these functions to be methods on a issue-sync config struct that encapsulates all the configuration, including dry-run. These methods then operate on a method receiver that holds all the information needed to control the operation of the function. Either that, or all of these methods take an additional parameter dryRun.

@MorganEPatch

MorganEPatch commented Aug 2, 2017

Copy link
Copy Markdown
ContributorAuthor

This functionality is now replicated in #15. We may be able to simply close this PR. Let me check...

EDIT: No, I think it may just be easier to merge this anyway. There's a handful of changes here that do need to propagate upward.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR needs work. The dryRun option still uses if/else everywhere to determine what functionality to execute rather than two different structs that implement the same interface. I realize that is coming in #15, but that work should really just have been written in this PR. Also, all the configuration is floating around in global variables still. Lets get this merged quickly so we can get the fixes implemented ASAP. That will give us more sanity. Please take a look at the few comments and then lets merge.

Comment threadcmd/root.go
if fields.Description != "" {
fields.Description = newlineReplaceRegex.ReplaceAllString(fields.Description, "\\n")
if len(fields.Description) > 20 {
log.Infof(" Description: %s...", fields.Description[0:20])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do some of these have leading whitespace?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fields all have whitespace for clarity. All the dry-runs print:

Doing action
Field1: ...
Field2: ...

Comment threadcmd/root.go Outdated
if !dryRun {
req, err := jClient.NewRequest("PUT", fmt.Sprintf("rest/api/2/issue/%s/comment/%s", jIssue.Key, jComment.ID), request)
if err != nil {
log.Errorf("Error creating comment update request: %s", err)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use %v

Comment threadcmd/root.go

project jira.Project

dryRun bool

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be a field on a config struct, not a global variable.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome. pleas squash and then shipit

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

I realize that is coming in #15, but that work should really just have been written in this PR.

Okay. I just felt that that would be too much all in one PR, especially since it depended on the config struct as well, which is also its own big changes.

When passing --dry-run or -d to the command, it will print out the
list of actions that it would take, but will not send any create
or update requests to the servers.
@MorganEPatch
MorganEPatch merged commit e1c6698 into coreos:masterAug 7, 2017
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MorganEPatch@squat
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Create a dry run mode by MorganEPatch · Pull Request #9 · coreos/issue-sync · GitHub
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a dry run mode - #9

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run
Aug 7, 2017
Merged

Create a dry run mode#9
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #8.

Creates a dry run mode which prints out the actions to be taken but does not create or update anything.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation will not scale and will introduce bugs going forward. please refer to the comment for a description on the correct path forward regarding parameterizing functions for dry-runs. Also, please squash the dry-run commits so they are easier to review and separate the description length bug-fix into its own PR.

Comment threadcmd/root.go
}
if fields.Description != "" {
log.Infof(" Description: %s...", fields.Description[0:20])
if len(fields.Description) > 20 {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seem unrelated to the dry-run option. Separate this into it's own PR so we can track and revert dry-run changes separately from this bug fix.

Comment threadcmd/root.go Outdated
if err != nil {
log.Errorf("Error updating JIRA issue %s: %s", jIssue.Key, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

handle this error

Comment threadcmd/root.go
}

issue, res, err := jClient.Issue.Update(issue)
if !dryRun {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this will not scale well and will get unmanageable quite fast. the behavior of this function is now being drastically altered by a variable that is not a param. Testing this is messy and ensuring correctness becomes increasingly difficult to reason about. The correct way to do this is for all of these functions to be methods on a issue-sync config struct that encapsulates all the configuration, including dry-run. These methods then operate on a method receiver that holds all the information needed to control the operation of the function. Either that, or all of these methods take an additional parameter dryRun.

@MorganEPatch

MorganEPatch commented Aug 2, 2017

Copy link
Copy Markdown
ContributorAuthor

This functionality is now replicated in #15. We may be able to simply close this PR. Let me check...

EDIT: No, I think it may just be easier to merge this anyway. There's a handful of changes here that do need to propagate upward.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR needs work. The dryRun option still uses if/else everywhere to determine what functionality to execute rather than two different structs that implement the same interface. I realize that is coming in #15, but that work should really just have been written in this PR. Also, all the configuration is floating around in global variables still. Lets get this merged quickly so we can get the fixes implemented ASAP. That will give us more sanity. Please take a look at the few comments and then lets merge.

Comment threadcmd/root.go
if fields.Description != "" {
fields.Description = newlineReplaceRegex.ReplaceAllString(fields.Description, "\\n")
if len(fields.Description) > 20 {
log.Infof(" Description: %s...", fields.Description[0:20])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do some of these have leading whitespace?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fields all have whitespace for clarity. All the dry-runs print:

Doing action
Field1: ...
Field2: ...

Comment threadcmd/root.go Outdated
if !dryRun {
req, err := jClient.NewRequest("PUT", fmt.Sprintf("rest/api/2/issue/%s/comment/%s", jIssue.Key, jComment.ID), request)
if err != nil {
log.Errorf("Error creating comment update request: %s", err)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use %v

Comment threadcmd/root.go

project jira.Project

dryRun bool

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be a field on a config struct, not a global variable.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome. pleas squash and then shipit

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

I realize that is coming in #15, but that work should really just have been written in this PR.

Okay. I just felt that that would be too much all in one PR, especially since it depended on the config struct as well, which is also its own big changes.

When passing --dry-run or -d to the command, it will print out the
list of actions that it would take, but will not send any create
or update requests to the servers.
@MorganEPatch
MorganEPatch merged commit e1c6698 into coreos:masterAug 7, 2017
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MorganEPatch@squat
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Create a dry run mode by MorganEPatch · Pull Request #9 · coreos/issue-sync · GitHub
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a dry run mode - #9

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run
Aug 7, 2017
Merged

Create a dry run mode#9
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #8.

Creates a dry run mode which prints out the actions to be taken but does not create or update anything.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation will not scale and will introduce bugs going forward. please refer to the comment for a description on the correct path forward regarding parameterizing functions for dry-runs. Also, please squash the dry-run commits so they are easier to review and separate the description length bug-fix into its own PR.

Comment threadcmd/root.go
}
if fields.Description != "" {
log.Infof(" Description: %s...", fields.Description[0:20])
if len(fields.Description) > 20 {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seem unrelated to the dry-run option. Separate this into it's own PR so we can track and revert dry-run changes separately from this bug fix.

Comment threadcmd/root.go Outdated
if err != nil {
log.Errorf("Error updating JIRA issue %s: %s", jIssue.Key, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

handle this error

Comment threadcmd/root.go
}

issue, res, err := jClient.Issue.Update(issue)
if !dryRun {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this will not scale well and will get unmanageable quite fast. the behavior of this function is now being drastically altered by a variable that is not a param. Testing this is messy and ensuring correctness becomes increasingly difficult to reason about. The correct way to do this is for all of these functions to be methods on a issue-sync config struct that encapsulates all the configuration, including dry-run. These methods then operate on a method receiver that holds all the information needed to control the operation of the function. Either that, or all of these methods take an additional parameter dryRun.

@MorganEPatch

MorganEPatch commented Aug 2, 2017

Copy link
Copy Markdown
ContributorAuthor

This functionality is now replicated in #15. We may be able to simply close this PR. Let me check...

EDIT: No, I think it may just be easier to merge this anyway. There's a handful of changes here that do need to propagate upward.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR needs work. The dryRun option still uses if/else everywhere to determine what functionality to execute rather than two different structs that implement the same interface. I realize that is coming in #15, but that work should really just have been written in this PR. Also, all the configuration is floating around in global variables still. Lets get this merged quickly so we can get the fixes implemented ASAP. That will give us more sanity. Please take a look at the few comments and then lets merge.

Comment threadcmd/root.go
if fields.Description != "" {
fields.Description = newlineReplaceRegex.ReplaceAllString(fields.Description, "\\n")
if len(fields.Description) > 20 {
log.Infof(" Description: %s...", fields.Description[0:20])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do some of these have leading whitespace?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fields all have whitespace for clarity. All the dry-runs print:

Doing action
Field1: ...
Field2: ...

Comment threadcmd/root.go Outdated
if !dryRun {
req, err := jClient.NewRequest("PUT", fmt.Sprintf("rest/api/2/issue/%s/comment/%s", jIssue.Key, jComment.ID), request)
if err != nil {
log.Errorf("Error creating comment update request: %s", err)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use %v

Comment threadcmd/root.go

project jira.Project

dryRun bool

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be a field on a config struct, not a global variable.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome. pleas squash and then shipit

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

I realize that is coming in #15, but that work should really just have been written in this PR.

Okay. I just felt that that would be too much all in one PR, especially since it depended on the config struct as well, which is also its own big changes.

When passing --dry-run or -d to the command, it will print out the
list of actions that it would take, but will not send any create
or update requests to the servers.
@MorganEPatch
MorganEPatch merged commit e1c6698 into coreos:masterAug 7, 2017
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MorganEPatch@squat
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Create a dry run mode by MorganEPatch · Pull Request #9 · coreos/issue-sync · GitHub
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a dry run mode - #9

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run
Aug 7, 2017
Merged

Create a dry run mode#9
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:dry-run

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #8.

Creates a dry run mode which prints out the actions to be taken but does not create or update anything.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation will not scale and will introduce bugs going forward. please refer to the comment for a description on the correct path forward regarding parameterizing functions for dry-runs. Also, please squash the dry-run commits so they are easier to review and separate the description length bug-fix into its own PR.

Comment threadcmd/root.go
}
if fields.Description != "" {
log.Infof(" Description: %s...", fields.Description[0:20])
if len(fields.Description) > 20 {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seem unrelated to the dry-run option. Separate this into it's own PR so we can track and revert dry-run changes separately from this bug fix.

Comment threadcmd/root.go Outdated
if err != nil {
log.Errorf("Error updating JIRA issue %s: %s", jIssue.Key, err)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

handle this error

Comment threadcmd/root.go
}

issue, res, err := jClient.Issue.Update(issue)
if !dryRun {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this will not scale well and will get unmanageable quite fast. the behavior of this function is now being drastically altered by a variable that is not a param. Testing this is messy and ensuring correctness becomes increasingly difficult to reason about. The correct way to do this is for all of these functions to be methods on a issue-sync config struct that encapsulates all the configuration, including dry-run. These methods then operate on a method receiver that holds all the information needed to control the operation of the function. Either that, or all of these methods take an additional parameter dryRun.

@MorganEPatch

MorganEPatch commented Aug 2, 2017

Copy link
Copy Markdown
ContributorAuthor

This functionality is now replicated in #15. We may be able to simply close this PR. Let me check...

EDIT: No, I think it may just be easier to merge this anyway. There's a handful of changes here that do need to propagate upward.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR needs work. The dryRun option still uses if/else everywhere to determine what functionality to execute rather than two different structs that implement the same interface. I realize that is coming in #15, but that work should really just have been written in this PR. Also, all the configuration is floating around in global variables still. Lets get this merged quickly so we can get the fixes implemented ASAP. That will give us more sanity. Please take a look at the few comments and then lets merge.

Comment threadcmd/root.go
if fields.Description != "" {
fields.Description = newlineReplaceRegex.ReplaceAllString(fields.Description, "\\n")
if len(fields.Description) > 20 {
log.Infof(" Description: %s...", fields.Description[0:20])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do some of these have leading whitespace?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fields all have whitespace for clarity. All the dry-runs print:

Doing action
Field1: ...
Field2: ...

Comment threadcmd/root.go Outdated
if !dryRun {
req, err := jClient.NewRequest("PUT", fmt.Sprintf("rest/api/2/issue/%s/comment/%s", jIssue.Key, jComment.ID), request)
if err != nil {
log.Errorf("Error creating comment update request: %s", err)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use %v

Comment threadcmd/root.go

project jira.Project

dryRun bool

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be a field on a config struct, not a global variable.

@squatsquat left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome. pleas squash and then shipit

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

I realize that is coming in #15, but that work should really just have been written in this PR.

Okay. I just felt that that would be too much all in one PR, especially since it depended on the config struct as well, which is also its own big changes.

When passing --dry-run or -d to the command, it will print out the
list of actions that it would take, but will not send any create
or update requests to the servers.
@MorganEPatch
MorganEPatch merged commit e1c6698 into coreos:masterAug 7, 2017
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MorganEPatch@squat