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

Create a configuration object - #13

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object
Aug 7, 2017
Merged

Create a configuration object#13
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #11.

Move the configuration out of global variables and into a configuration object. Also begin moving other utility functions into lib/.

@MorganEPatchMorganEPatch self-assigned this Jul 26, 2017

@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.

Overall looks good, @LyonesGamer! This is a much needed restructuring. Please re-arrange the remaining functions and then we can merge this.

Comment threadcmd/root.go
// API.
func createComment(ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
u, _, err := makeGHRequest(func() (interface{}, *github.Response, error) {
func createComment(config lib.Config, ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// updateComment compares the body of a GitHub comment with the body (minus header)
// of the JIRA comment, and updates the JIRA comment if necessary.
func updateComment(ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateComment(config lib.Config, ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// matches each one to a comment in `existing`. If it finds a match, it calls
// updateComment; if it doesn't, it calls createComment.
func createComments(ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {
func createComments(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// createIssue generates a JIRA issue from the various fields on the given GitHub issue, then
// sends it to the JIRA API.
func createIssue(issue github.Issue, ghClient github.Client, jClient jira.Client) error {
func createIssue(config lib.Config, issue github.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// differ, the differing fields of the JIRA issue are updated to match the GitHub
// issue.
func updateIssue(ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateIssue(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// then matches each one. If a JIRA issue already exists for a given GitHub issue,
// it calls updateIssue; if no JIRA issue already exists, it calls createIssue.
func compareIssues(ghClient github.Client, jiraClient jira.Client) error {
func compareIssues(config lib.Config, ghClient github.Client, jiraClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go Outdated
// then makes an API request to confirm that the service is running and the auth token
// is valid
func getGitHubClient(token string) (*github.Client, error) {
func getGitHubClient(config lib.Config) (*github.Client, error) {

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 part of the the clients file. lib should know how to create a new github client given a config.

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.

This should have been moved to the clients file. Some weird issue must have happened during rebasing or something...

Comment threadcmd/root.go Outdated
//
// The validity of the client and its authentication are not checked here. One way
// to check them would be to call config.LoadJIRAConfig() after this function.
func getJIRAClient(config lib.Config) (*jira.Client, error) {

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 part of the the clients file. lib should know how to create a new jira client given a config.

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Moving all of the functions into separate packages occurs in #14.

@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 repo is starting to look much better. Just a few small comments.

Comment threadlib/clients.go Outdated

// GetGitHubClient initializes a GitHub API client with an OAuth client for authentication,
// then makes an API request to confirm that the service is running and the auth token
// is valid

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.

add a period here.

Comment threadcmd/root.go Outdated

// Execute provides a single function to run the root command and handle errors.
func Execute() {
// Create a temporary logger that we can use if an error occurs before the real one is instantiated

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.

add a period e here.

Comment threadcmd/root.go Outdated
found := false
for _, jIssue := range jiraIssues {
id, _ := jIssue.Fields.Unknowns.Int(fmt.Sprintf("customfield_%s", ghIDFieldID))
id, _ := jIssue.Fields.Unknowns.Int(config.GetFieldKey(lib.GitHubID))

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.

is this suppressing an error?

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.

It's suppressing the error that the issue doesn't have the GitHub ID set; that can't happen since we filtered it by the GitHub ID. I'll add an error handler though, I suppose weird API errors are never unheard of.

Comment threadlib/config.go Outdated
lastUpdate string
}

// Config is the root configuration object the application creates

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.

add a period here too.

Comment threadlib/config.go Outdated

// Config is the root configuration object the application creates
type Config struct {
// cmdFile is the file Viper is using for its configuration (default $HOME/.issue-sync.json)

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.

make all of these comments full sentences please

Comment threadlib/config.go Outdated

// NewConfig creates a new, immutable configuration object. This object
// holds the Viper configuration and the logger, and is validated. The
// JIRA configuration is not yet initialized

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.

here too

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Fixed.

Create a new Config object which represents the current application
configuration. It stores both the viper configuration and computed
configuration values such as the custom field IDs. Also, move API
client related functions into a new lib file to make them accessible
to the whole application without circular imports.
@MorganEPatch
MorganEPatch merged commit ff3af54 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)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a configuration object - #13

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object
Aug 7, 2017
Merged

Create a configuration object#13
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #11.

Move the configuration out of global variables and into a configuration object. Also begin moving other utility functions into lib/.

@MorganEPatchMorganEPatch self-assigned this Jul 26, 2017

@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.

Overall looks good, @LyonesGamer! This is a much needed restructuring. Please re-arrange the remaining functions and then we can merge this.

Comment threadcmd/root.go
// API.
func createComment(ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
u, _, err := makeGHRequest(func() (interface{}, *github.Response, error) {
func createComment(config lib.Config, ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// updateComment compares the body of a GitHub comment with the body (minus header)
// of the JIRA comment, and updates the JIRA comment if necessary.
func updateComment(ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateComment(config lib.Config, ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// matches each one to a comment in `existing`. If it finds a match, it calls
// updateComment; if it doesn't, it calls createComment.
func createComments(ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {
func createComments(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// createIssue generates a JIRA issue from the various fields on the given GitHub issue, then
// sends it to the JIRA API.
func createIssue(issue github.Issue, ghClient github.Client, jClient jira.Client) error {
func createIssue(config lib.Config, issue github.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// differ, the differing fields of the JIRA issue are updated to match the GitHub
// issue.
func updateIssue(ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateIssue(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// then matches each one. If a JIRA issue already exists for a given GitHub issue,
// it calls updateIssue; if no JIRA issue already exists, it calls createIssue.
func compareIssues(ghClient github.Client, jiraClient jira.Client) error {
func compareIssues(config lib.Config, ghClient github.Client, jiraClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go Outdated
// then makes an API request to confirm that the service is running and the auth token
// is valid
func getGitHubClient(token string) (*github.Client, error) {
func getGitHubClient(config lib.Config) (*github.Client, error) {

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 part of the the clients file. lib should know how to create a new github client given a config.

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.

This should have been moved to the clients file. Some weird issue must have happened during rebasing or something...

Comment threadcmd/root.go Outdated
//
// The validity of the client and its authentication are not checked here. One way
// to check them would be to call config.LoadJIRAConfig() after this function.
func getJIRAClient(config lib.Config) (*jira.Client, error) {

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 part of the the clients file. lib should know how to create a new jira client given a config.

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Moving all of the functions into separate packages occurs in #14.

@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 repo is starting to look much better. Just a few small comments.

Comment threadlib/clients.go Outdated

// GetGitHubClient initializes a GitHub API client with an OAuth client for authentication,
// then makes an API request to confirm that the service is running and the auth token
// is valid

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.

add a period here.

Comment threadcmd/root.go Outdated

// Execute provides a single function to run the root command and handle errors.
func Execute() {
// Create a temporary logger that we can use if an error occurs before the real one is instantiated

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.

add a period e here.

Comment threadcmd/root.go Outdated
found := false
for _, jIssue := range jiraIssues {
id, _ := jIssue.Fields.Unknowns.Int(fmt.Sprintf("customfield_%s", ghIDFieldID))
id, _ := jIssue.Fields.Unknowns.Int(config.GetFieldKey(lib.GitHubID))

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.

is this suppressing an error?

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.

It's suppressing the error that the issue doesn't have the GitHub ID set; that can't happen since we filtered it by the GitHub ID. I'll add an error handler though, I suppose weird API errors are never unheard of.

Comment threadlib/config.go Outdated
lastUpdate string
}

// Config is the root configuration object the application creates

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.

add a period here too.

Comment threadlib/config.go Outdated

// Config is the root configuration object the application creates
type Config struct {
// cmdFile is the file Viper is using for its configuration (default $HOME/.issue-sync.json)

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.

make all of these comments full sentences please

Comment threadlib/config.go Outdated

// NewConfig creates a new, immutable configuration object. This object
// holds the Viper configuration and the logger, and is validated. The
// JIRA configuration is not yet initialized

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.

here too

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Fixed.

Create a new Config object which represents the current application
configuration. It stores both the viper configuration and computed
configuration values such as the custom field IDs. Also, move API
client related functions into a new lib file to make them accessible
to the whole application without circular imports.
@MorganEPatch
MorganEPatch merged commit ff3af54 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)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a configuration object - #13

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object
Aug 7, 2017
Merged

Create a configuration object#13
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #11.

Move the configuration out of global variables and into a configuration object. Also begin moving other utility functions into lib/.

@MorganEPatchMorganEPatch self-assigned this Jul 26, 2017

@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.

Overall looks good, @LyonesGamer! This is a much needed restructuring. Please re-arrange the remaining functions and then we can merge this.

Comment threadcmd/root.go
// API.
func createComment(ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
u, _, err := makeGHRequest(func() (interface{}, *github.Response, error) {
func createComment(config lib.Config, ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// updateComment compares the body of a GitHub comment with the body (minus header)
// of the JIRA comment, and updates the JIRA comment if necessary.
func updateComment(ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateComment(config lib.Config, ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// matches each one to a comment in `existing`. If it finds a match, it calls
// updateComment; if it doesn't, it calls createComment.
func createComments(ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {
func createComments(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// createIssue generates a JIRA issue from the various fields on the given GitHub issue, then
// sends it to the JIRA API.
func createIssue(issue github.Issue, ghClient github.Client, jClient jira.Client) error {
func createIssue(config lib.Config, issue github.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// differ, the differing fields of the JIRA issue are updated to match the GitHub
// issue.
func updateIssue(ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateIssue(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// then matches each one. If a JIRA issue already exists for a given GitHub issue,
// it calls updateIssue; if no JIRA issue already exists, it calls createIssue.
func compareIssues(ghClient github.Client, jiraClient jira.Client) error {
func compareIssues(config lib.Config, ghClient github.Client, jiraClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go Outdated
// then makes an API request to confirm that the service is running and the auth token
// is valid
func getGitHubClient(token string) (*github.Client, error) {
func getGitHubClient(config lib.Config) (*github.Client, error) {

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 part of the the clients file. lib should know how to create a new github client given a config.

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.

This should have been moved to the clients file. Some weird issue must have happened during rebasing or something...

Comment threadcmd/root.go Outdated
//
// The validity of the client and its authentication are not checked here. One way
// to check them would be to call config.LoadJIRAConfig() after this function.
func getJIRAClient(config lib.Config) (*jira.Client, error) {

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 part of the the clients file. lib should know how to create a new jira client given a config.

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Moving all of the functions into separate packages occurs in #14.

@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 repo is starting to look much better. Just a few small comments.

Comment threadlib/clients.go Outdated

// GetGitHubClient initializes a GitHub API client with an OAuth client for authentication,
// then makes an API request to confirm that the service is running and the auth token
// is valid

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.

add a period here.

Comment threadcmd/root.go Outdated

// Execute provides a single function to run the root command and handle errors.
func Execute() {
// Create a temporary logger that we can use if an error occurs before the real one is instantiated

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.

add a period e here.

Comment threadcmd/root.go Outdated
found := false
for _, jIssue := range jiraIssues {
id, _ := jIssue.Fields.Unknowns.Int(fmt.Sprintf("customfield_%s", ghIDFieldID))
id, _ := jIssue.Fields.Unknowns.Int(config.GetFieldKey(lib.GitHubID))

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.

is this suppressing an error?

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.

It's suppressing the error that the issue doesn't have the GitHub ID set; that can't happen since we filtered it by the GitHub ID. I'll add an error handler though, I suppose weird API errors are never unheard of.

Comment threadlib/config.go Outdated
lastUpdate string
}

// Config is the root configuration object the application creates

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.

add a period here too.

Comment threadlib/config.go Outdated

// Config is the root configuration object the application creates
type Config struct {
// cmdFile is the file Viper is using for its configuration (default $HOME/.issue-sync.json)

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.

make all of these comments full sentences please

Comment threadlib/config.go Outdated

// NewConfig creates a new, immutable configuration object. This object
// holds the Viper configuration and the logger, and is validated. The
// JIRA configuration is not yet initialized

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.

here too

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Fixed.

Create a new Config object which represents the current application
configuration. It stores both the viper configuration and computed
configuration values such as the custom field IDs. Also, move API
client related functions into a new lib file to make them accessible
to the whole application without circular imports.
@MorganEPatch
MorganEPatch merged commit ff3af54 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)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a configuration object - #13

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object
Aug 7, 2017
Merged

Create a configuration object#13
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #11.

Move the configuration out of global variables and into a configuration object. Also begin moving other utility functions into lib/.

@MorganEPatchMorganEPatch self-assigned this Jul 26, 2017

@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.

Overall looks good, @LyonesGamer! This is a much needed restructuring. Please re-arrange the remaining functions and then we can merge this.

Comment threadcmd/root.go
// API.
func createComment(ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
u, _, err := makeGHRequest(func() (interface{}, *github.Response, error) {
func createComment(config lib.Config, ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// updateComment compares the body of a GitHub comment with the body (minus header)
// of the JIRA comment, and updates the JIRA comment if necessary.
func updateComment(ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateComment(config lib.Config, ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// matches each one to a comment in `existing`. If it finds a match, it calls
// updateComment; if it doesn't, it calls createComment.
func createComments(ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {
func createComments(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// createIssue generates a JIRA issue from the various fields on the given GitHub issue, then
// sends it to the JIRA API.
func createIssue(issue github.Issue, ghClient github.Client, jClient jira.Client) error {
func createIssue(config lib.Config, issue github.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// differ, the differing fields of the JIRA issue are updated to match the GitHub
// issue.
func updateIssue(ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateIssue(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// then matches each one. If a JIRA issue already exists for a given GitHub issue,
// it calls updateIssue; if no JIRA issue already exists, it calls createIssue.
func compareIssues(ghClient github.Client, jiraClient jira.Client) error {
func compareIssues(config lib.Config, ghClient github.Client, jiraClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go Outdated
// then makes an API request to confirm that the service is running and the auth token
// is valid
func getGitHubClient(token string) (*github.Client, error) {
func getGitHubClient(config lib.Config) (*github.Client, error) {

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 part of the the clients file. lib should know how to create a new github client given a config.

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.

This should have been moved to the clients file. Some weird issue must have happened during rebasing or something...

Comment threadcmd/root.go Outdated
//
// The validity of the client and its authentication are not checked here. One way
// to check them would be to call config.LoadJIRAConfig() after this function.
func getJIRAClient(config lib.Config) (*jira.Client, error) {

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 part of the the clients file. lib should know how to create a new jira client given a config.

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Moving all of the functions into separate packages occurs in #14.

@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 repo is starting to look much better. Just a few small comments.

Comment threadlib/clients.go Outdated

// GetGitHubClient initializes a GitHub API client with an OAuth client for authentication,
// then makes an API request to confirm that the service is running and the auth token
// is valid

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.

add a period here.

Comment threadcmd/root.go Outdated

// Execute provides a single function to run the root command and handle errors.
func Execute() {
// Create a temporary logger that we can use if an error occurs before the real one is instantiated

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.

add a period e here.

Comment threadcmd/root.go Outdated
found := false
for _, jIssue := range jiraIssues {
id, _ := jIssue.Fields.Unknowns.Int(fmt.Sprintf("customfield_%s", ghIDFieldID))
id, _ := jIssue.Fields.Unknowns.Int(config.GetFieldKey(lib.GitHubID))

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.

is this suppressing an error?

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.

It's suppressing the error that the issue doesn't have the GitHub ID set; that can't happen since we filtered it by the GitHub ID. I'll add an error handler though, I suppose weird API errors are never unheard of.

Comment threadlib/config.go Outdated
lastUpdate string
}

// Config is the root configuration object the application creates

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.

add a period here too.

Comment threadlib/config.go Outdated

// Config is the root configuration object the application creates
type Config struct {
// cmdFile is the file Viper is using for its configuration (default $HOME/.issue-sync.json)

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.

make all of these comments full sentences please

Comment threadlib/config.go Outdated

// NewConfig creates a new, immutable configuration object. This object
// holds the Viper configuration and the logger, and is validated. The
// JIRA configuration is not yet initialized

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.

here too

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Fixed.

Create a new Config object which represents the current application
configuration. It stores both the viper configuration and computed
configuration values such as the custom field IDs. Also, move API
client related functions into a new lib file to make them accessible
to the whole application without circular imports.
@MorganEPatch
MorganEPatch merged commit ff3af54 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)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a configuration object - #13

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object
Aug 7, 2017
Merged

Create a configuration object#13
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #11.

Move the configuration out of global variables and into a configuration object. Also begin moving other utility functions into lib/.

@MorganEPatchMorganEPatch self-assigned this Jul 26, 2017

@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.

Overall looks good, @LyonesGamer! This is a much needed restructuring. Please re-arrange the remaining functions and then we can merge this.

Comment threadcmd/root.go
// API.
func createComment(ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
u, _, err := makeGHRequest(func() (interface{}, *github.Response, error) {
func createComment(config lib.Config, ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// updateComment compares the body of a GitHub comment with the body (minus header)
// of the JIRA comment, and updates the JIRA comment if necessary.
func updateComment(ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateComment(config lib.Config, ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// matches each one to a comment in `existing`. If it finds a match, it calls
// updateComment; if it doesn't, it calls createComment.
func createComments(ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {
func createComments(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// createIssue generates a JIRA issue from the various fields on the given GitHub issue, then
// sends it to the JIRA API.
func createIssue(issue github.Issue, ghClient github.Client, jClient jira.Client) error {
func createIssue(config lib.Config, issue github.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// differ, the differing fields of the JIRA issue are updated to match the GitHub
// issue.
func updateIssue(ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateIssue(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// then matches each one. If a JIRA issue already exists for a given GitHub issue,
// it calls updateIssue; if no JIRA issue already exists, it calls createIssue.
func compareIssues(ghClient github.Client, jiraClient jira.Client) error {
func compareIssues(config lib.Config, ghClient github.Client, jiraClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go Outdated
// then makes an API request to confirm that the service is running and the auth token
// is valid
func getGitHubClient(token string) (*github.Client, error) {
func getGitHubClient(config lib.Config) (*github.Client, error) {

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 part of the the clients file. lib should know how to create a new github client given a config.

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.

This should have been moved to the clients file. Some weird issue must have happened during rebasing or something...

Comment threadcmd/root.go Outdated
//
// The validity of the client and its authentication are not checked here. One way
// to check them would be to call config.LoadJIRAConfig() after this function.
func getJIRAClient(config lib.Config) (*jira.Client, error) {

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 part of the the clients file. lib should know how to create a new jira client given a config.

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Moving all of the functions into separate packages occurs in #14.

@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 repo is starting to look much better. Just a few small comments.

Comment threadlib/clients.go Outdated

// GetGitHubClient initializes a GitHub API client with an OAuth client for authentication,
// then makes an API request to confirm that the service is running and the auth token
// is valid

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.

add a period here.

Comment threadcmd/root.go Outdated

// Execute provides a single function to run the root command and handle errors.
func Execute() {
// Create a temporary logger that we can use if an error occurs before the real one is instantiated

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.

add a period e here.

Comment threadcmd/root.go Outdated
found := false
for _, jIssue := range jiraIssues {
id, _ := jIssue.Fields.Unknowns.Int(fmt.Sprintf("customfield_%s", ghIDFieldID))
id, _ := jIssue.Fields.Unknowns.Int(config.GetFieldKey(lib.GitHubID))

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.

is this suppressing an error?

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.

It's suppressing the error that the issue doesn't have the GitHub ID set; that can't happen since we filtered it by the GitHub ID. I'll add an error handler though, I suppose weird API errors are never unheard of.

Comment threadlib/config.go Outdated
lastUpdate string
}

// Config is the root configuration object the application creates

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.

add a period here too.

Comment threadlib/config.go Outdated

// Config is the root configuration object the application creates
type Config struct {
// cmdFile is the file Viper is using for its configuration (default $HOME/.issue-sync.json)

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.

make all of these comments full sentences please

Comment threadlib/config.go Outdated

// NewConfig creates a new, immutable configuration object. This object
// holds the Viper configuration and the logger, and is validated. The
// JIRA configuration is not yet initialized

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.

here too

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Fixed.

Create a new Config object which represents the current application
configuration. It stores both the viper configuration and computed
configuration values such as the custom field IDs. Also, move API
client related functions into a new lib file to make them accessible
to the whole application without circular imports.
@MorganEPatch
MorganEPatch merged commit ff3af54 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)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a configuration object - #13

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object
Aug 7, 2017
Merged

Create a configuration object#13
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #11.

Move the configuration out of global variables and into a configuration object. Also begin moving other utility functions into lib/.

@MorganEPatchMorganEPatch self-assigned this Jul 26, 2017

@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.

Overall looks good, @LyonesGamer! This is a much needed restructuring. Please re-arrange the remaining functions and then we can merge this.

Comment threadcmd/root.go
// API.
func createComment(ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
u, _, err := makeGHRequest(func() (interface{}, *github.Response, error) {
func createComment(config lib.Config, ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// updateComment compares the body of a GitHub comment with the body (minus header)
// of the JIRA comment, and updates the JIRA comment if necessary.
func updateComment(ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateComment(config lib.Config, ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// matches each one to a comment in `existing`. If it finds a match, it calls
// updateComment; if it doesn't, it calls createComment.
func createComments(ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {
func createComments(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// createIssue generates a JIRA issue from the various fields on the given GitHub issue, then
// sends it to the JIRA API.
func createIssue(issue github.Issue, ghClient github.Client, jClient jira.Client) error {
func createIssue(config lib.Config, issue github.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// differ, the differing fields of the JIRA issue are updated to match the GitHub
// issue.
func updateIssue(ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateIssue(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// then matches each one. If a JIRA issue already exists for a given GitHub issue,
// it calls updateIssue; if no JIRA issue already exists, it calls createIssue.
func compareIssues(ghClient github.Client, jiraClient jira.Client) error {
func compareIssues(config lib.Config, ghClient github.Client, jiraClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go Outdated
// then makes an API request to confirm that the service is running and the auth token
// is valid
func getGitHubClient(token string) (*github.Client, error) {
func getGitHubClient(config lib.Config) (*github.Client, error) {

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 part of the the clients file. lib should know how to create a new github client given a config.

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.

This should have been moved to the clients file. Some weird issue must have happened during rebasing or something...

Comment threadcmd/root.go Outdated
//
// The validity of the client and its authentication are not checked here. One way
// to check them would be to call config.LoadJIRAConfig() after this function.
func getJIRAClient(config lib.Config) (*jira.Client, error) {

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 part of the the clients file. lib should know how to create a new jira client given a config.

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Moving all of the functions into separate packages occurs in #14.

@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 repo is starting to look much better. Just a few small comments.

Comment threadlib/clients.go Outdated

// GetGitHubClient initializes a GitHub API client with an OAuth client for authentication,
// then makes an API request to confirm that the service is running and the auth token
// is valid

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.

add a period here.

Comment threadcmd/root.go Outdated

// Execute provides a single function to run the root command and handle errors.
func Execute() {
// Create a temporary logger that we can use if an error occurs before the real one is instantiated

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.

add a period e here.

Comment threadcmd/root.go Outdated
found := false
for _, jIssue := range jiraIssues {
id, _ := jIssue.Fields.Unknowns.Int(fmt.Sprintf("customfield_%s", ghIDFieldID))
id, _ := jIssue.Fields.Unknowns.Int(config.GetFieldKey(lib.GitHubID))

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.

is this suppressing an error?

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.

It's suppressing the error that the issue doesn't have the GitHub ID set; that can't happen since we filtered it by the GitHub ID. I'll add an error handler though, I suppose weird API errors are never unheard of.

Comment threadlib/config.go Outdated
lastUpdate string
}

// Config is the root configuration object the application creates

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.

add a period here too.

Comment threadlib/config.go Outdated

// Config is the root configuration object the application creates
type Config struct {
// cmdFile is the file Viper is using for its configuration (default $HOME/.issue-sync.json)

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.

make all of these comments full sentences please

Comment threadlib/config.go Outdated

// NewConfig creates a new, immutable configuration object. This object
// holds the Viper configuration and the logger, and is validated. The
// JIRA configuration is not yet initialized

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.

here too

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Fixed.

Create a new Config object which represents the current application
configuration. It stores both the viper configuration and computed
configuration values such as the custom field IDs. Also, move API
client related functions into a new lib file to make them accessible
to the whole application without circular imports.
@MorganEPatch
MorganEPatch merged commit ff3af54 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)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a configuration object - #13

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object
Aug 7, 2017
Merged

Create a configuration object#13
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #11.

Move the configuration out of global variables and into a configuration object. Also begin moving other utility functions into lib/.

@MorganEPatchMorganEPatch self-assigned this Jul 26, 2017

@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.

Overall looks good, @LyonesGamer! This is a much needed restructuring. Please re-arrange the remaining functions and then we can merge this.

Comment threadcmd/root.go
// API.
func createComment(ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
u, _, err := makeGHRequest(func() (interface{}, *github.Response, error) {
func createComment(config lib.Config, ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// updateComment compares the body of a GitHub comment with the body (minus header)
// of the JIRA comment, and updates the JIRA comment if necessary.
func updateComment(ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateComment(config lib.Config, ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// matches each one to a comment in `existing`. If it finds a match, it calls
// updateComment; if it doesn't, it calls createComment.
func createComments(ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {
func createComments(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// createIssue generates a JIRA issue from the various fields on the given GitHub issue, then
// sends it to the JIRA API.
func createIssue(issue github.Issue, ghClient github.Client, jClient jira.Client) error {
func createIssue(config lib.Config, issue github.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// differ, the differing fields of the JIRA issue are updated to match the GitHub
// issue.
func updateIssue(ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateIssue(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// then matches each one. If a JIRA issue already exists for a given GitHub issue,
// it calls updateIssue; if no JIRA issue already exists, it calls createIssue.
func compareIssues(ghClient github.Client, jiraClient jira.Client) error {
func compareIssues(config lib.Config, ghClient github.Client, jiraClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go Outdated
// then makes an API request to confirm that the service is running and the auth token
// is valid
func getGitHubClient(token string) (*github.Client, error) {
func getGitHubClient(config lib.Config) (*github.Client, error) {

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 part of the the clients file. lib should know how to create a new github client given a config.

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.

This should have been moved to the clients file. Some weird issue must have happened during rebasing or something...

Comment threadcmd/root.go Outdated
//
// The validity of the client and its authentication are not checked here. One way
// to check them would be to call config.LoadJIRAConfig() after this function.
func getJIRAClient(config lib.Config) (*jira.Client, error) {

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 part of the the clients file. lib should know how to create a new jira client given a config.

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Moving all of the functions into separate packages occurs in #14.

@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 repo is starting to look much better. Just a few small comments.

Comment threadlib/clients.go Outdated

// GetGitHubClient initializes a GitHub API client with an OAuth client for authentication,
// then makes an API request to confirm that the service is running and the auth token
// is valid

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.

add a period here.

Comment threadcmd/root.go Outdated

// Execute provides a single function to run the root command and handle errors.
func Execute() {
// Create a temporary logger that we can use if an error occurs before the real one is instantiated

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.

add a period e here.

Comment threadcmd/root.go Outdated
found := false
for _, jIssue := range jiraIssues {
id, _ := jIssue.Fields.Unknowns.Int(fmt.Sprintf("customfield_%s", ghIDFieldID))
id, _ := jIssue.Fields.Unknowns.Int(config.GetFieldKey(lib.GitHubID))

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.

is this suppressing an error?

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.

It's suppressing the error that the issue doesn't have the GitHub ID set; that can't happen since we filtered it by the GitHub ID. I'll add an error handler though, I suppose weird API errors are never unheard of.

Comment threadlib/config.go Outdated
lastUpdate string
}

// Config is the root configuration object the application creates

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.

add a period here too.

Comment threadlib/config.go Outdated

// Config is the root configuration object the application creates
type Config struct {
// cmdFile is the file Viper is using for its configuration (default $HOME/.issue-sync.json)

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.

make all of these comments full sentences please

Comment threadlib/config.go Outdated

// NewConfig creates a new, immutable configuration object. This object
// holds the Viper configuration and the logger, and is validated. The
// JIRA configuration is not yet initialized

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.

here too

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Fixed.

Create a new Config object which represents the current application
configuration. It stores both the viper configuration and computed
configuration values such as the custom field IDs. Also, move API
client related functions into a new lib file to make them accessible
to the whole application without circular imports.
@MorganEPatch
MorganEPatch merged commit ff3af54 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)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Sep 21, 2023. It is now read-only.

Create a configuration object - #13

Merged
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object
Aug 7, 2017
Merged

Create a configuration object#13
MorganEPatch merged 1 commit into
coreos:masterfrom
MorganEPatch:config-object

Conversation

@MorganEPatch

Copy link
Copy Markdown
Contributor

Depends on #11.

Move the configuration out of global variables and into a configuration object. Also begin moving other utility functions into lib/.

@MorganEPatchMorganEPatch self-assigned this Jul 26, 2017

@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.

Overall looks good, @LyonesGamer! This is a much needed restructuring. Please re-arrange the remaining functions and then we can merge this.

Comment threadcmd/root.go
// API.
func createComment(ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
u, _, err := makeGHRequest(func() (interface{}, *github.Response, error) {
func createComment(config lib.Config, ghComment github.IssueComment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// updateComment compares the body of a GitHub comment with the body (minus header)
// of the JIRA comment, and updates the JIRA comment if necessary.
func updateComment(ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateComment(config lib.Config, ghComment github.IssueComment, jComment jira.Comment, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// matches each one to a comment in `existing`. If it finds a match, it calls
// updateComment; if it doesn't, it calls createComment.
func createComments(ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {
func createComments(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, existing []jira.Comment, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// createIssue generates a JIRA issue from the various fields on the given GitHub issue, then
// sends it to the JIRA API.
func createIssue(issue github.Issue, ghClient github.Client, jClient jira.Client) error {
func createIssue(config lib.Config, issue github.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// differ, the differing fields of the JIRA issue are updated to match the GitHub
// issue.
func updateIssue(ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {
func updateIssue(config lib.Config, ghIssue github.Issue, jIssue jira.Issue, ghClient github.Client, jClient jira.Client) error {

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.

same: all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go
// then matches each one. If a JIRA issue already exists for a given GitHub issue,
// it calls updateIssue; if no JIRA issue already exists, it calls createIssue.
func compareIssues(ghClient github.Client, jiraClient jira.Client) error {
func compareIssues(config lib.Config, ghClient github.Client, jiraClient jira.Client) error {

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.

all of these functions that are not directly concerned with configuring and launching the command should be outside of this file and package. this function should be in lib.

Comment threadcmd/root.go Outdated
// then makes an API request to confirm that the service is running and the auth token
// is valid
func getGitHubClient(token string) (*github.Client, error) {
func getGitHubClient(config lib.Config) (*github.Client, error) {

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 part of the the clients file. lib should know how to create a new github client given a config.

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.

This should have been moved to the clients file. Some weird issue must have happened during rebasing or something...

Comment threadcmd/root.go Outdated
//
// The validity of the client and its authentication are not checked here. One way
// to check them would be to call config.LoadJIRAConfig() after this function.
func getJIRAClient(config lib.Config) (*jira.Client, error) {

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 part of the the clients file. lib should know how to create a new jira client given a config.

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Moving all of the functions into separate packages occurs in #14.

@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 repo is starting to look much better. Just a few small comments.

Comment threadlib/clients.go Outdated

// GetGitHubClient initializes a GitHub API client with an OAuth client for authentication,
// then makes an API request to confirm that the service is running and the auth token
// is valid

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.

add a period here.

Comment threadcmd/root.go Outdated

// Execute provides a single function to run the root command and handle errors.
func Execute() {
// Create a temporary logger that we can use if an error occurs before the real one is instantiated

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.

add a period e here.

Comment threadcmd/root.go Outdated
found := false
for _, jIssue := range jiraIssues {
id, _ := jIssue.Fields.Unknowns.Int(fmt.Sprintf("customfield_%s", ghIDFieldID))
id, _ := jIssue.Fields.Unknowns.Int(config.GetFieldKey(lib.GitHubID))

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.

is this suppressing an error?

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.

It's suppressing the error that the issue doesn't have the GitHub ID set; that can't happen since we filtered it by the GitHub ID. I'll add an error handler though, I suppose weird API errors are never unheard of.

Comment threadlib/config.go Outdated
lastUpdate string
}

// Config is the root configuration object the application creates

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.

add a period here too.

Comment threadlib/config.go Outdated

// Config is the root configuration object the application creates
type Config struct {
// cmdFile is the file Viper is using for its configuration (default $HOME/.issue-sync.json)

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.

make all of these comments full sentences please

Comment threadlib/config.go Outdated

// NewConfig creates a new, immutable configuration object. This object
// holds the Viper configuration and the logger, and is validated. The
// JIRA configuration is not yet initialized

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.

here too

@MorganEPatch

Copy link
Copy Markdown
ContributorAuthor

@squat Fixed.

Create a new Config object which represents the current application
configuration. It stores both the viper configuration and computed
configuration values such as the custom field IDs. Also, move API
client related functions into a new lib file to make them accessible
to the whole application without circular imports.
@MorganEPatch
MorganEPatch merged commit ff3af54 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