Skip to content

copy from source repo - #31

Merged
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local
Apr 2, 2020
Merged

copy from source repo#31
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local

Conversation

@akihikokuroda

Copy link
Copy Markdown
Contributor

This implements #19.

When --from is a local path, it copies /path/to/local/repo/config/* to url.to.target.repo/services/svc-name/base/config/*.

@bigkevmcd

Copy link
Copy Markdown
Collaborator

@akihikokuroda looks like this needs a rebase for the debug functionality?

@bigkevmcdbigkevmcd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it might be nicer to have a "Local" implementation of the Source interface.

All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

Comment threadpkg/avancement/service_manager.go Outdated
if err != nil {
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

s/Soruce/Source/

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.

Thanks, I fix it.

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Maybe this should be "" rather than something that looks like a repo?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The fromURL is a directory path from the command line. The repoFactory needs a n url format string. I'll change the repoFactory to take "".

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Comment threadpkg/avancement/service_manager.go Outdated
parsed.User = url.UserPassword("promotion", a.Token)
return parsed.String(), nil
}
func fromSoruceRepo(s string) bool {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

fromSourceRepo()

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.

I fix it.

Comment threadpkg/avancement/pull_request.go
Comment threadpkg/git/repository.go
return err
}

func (r *Repository) Walk(base string, cb func(prefix, name string) error) error {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@bigkevmcd wrote,

I think it might be nicer to have a "Local" implementation of the Source interface.
All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

If that avoided the need for passing local bool into Repository.Walk I'd be very happy. It's confusing to see method calls like

err := source.Walk(filePath, false, func(prefix, name string) error {

because it's not obvious what 'false' means in that context. Also,

repoBase = filepath.Join(r.LocalPath, "config")

Earlier in copy.go we saw,

// pathForDestServiceConfig defines where in a 'gitops' repository the local config file
// for a given service should live.
func pathForDestServiceConfig(serviceName, name string) string {
return filepath.Join("services/", serviceName, "base", name)
}

Even if you can refactor out a local Source.Walk() it would still be good to keep filepath manipulation in dedicated functions.

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.

OK. I'll try it.

@akihikokuroda
akihikokurodaforce-pushed the local branch 3 times, most recently from 22a26b7 to ea2e9cbCompareApril 1, 2020 17:23
@akihikokuroda

Copy link
Copy Markdown
ContributorAuthor

I implemented the LocalSource. It looks much cleaner now. Thanks!

@mnuttall
mnuttall self-requested a review April 2, 2020 09:02
@mnuttall

Copy link
Copy Markdown
Collaborator

That's a great improvement - thank you Aki :)

@mnuttall
mnuttall merged commit 2fb244d into rhd-gitops-example:masterApr 2, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@akihikokuroda@bigkevmcd@mnuttall
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
copy from source repo by akihikokuroda · Pull Request #31 · rhd-gitops-example/services · GitHub
Skip to content

copy from source repo - #31

Merged
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local
Apr 2, 2020
Merged

copy from source repo#31
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local

Conversation

@akihikokuroda

Copy link
Copy Markdown
Contributor

This implements #19.

When --from is a local path, it copies /path/to/local/repo/config/* to url.to.target.repo/services/svc-name/base/config/*.

@bigkevmcd

Copy link
Copy Markdown
Collaborator

@akihikokuroda looks like this needs a rebase for the debug functionality?

@bigkevmcdbigkevmcd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it might be nicer to have a "Local" implementation of the Source interface.

All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

Comment threadpkg/avancement/service_manager.go Outdated
if err != nil {
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

s/Soruce/Source/

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.

Thanks, I fix it.

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Maybe this should be "" rather than something that looks like a repo?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The fromURL is a directory path from the command line. The repoFactory needs a n url format string. I'll change the repoFactory to take "".

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Comment threadpkg/avancement/service_manager.go Outdated
parsed.User = url.UserPassword("promotion", a.Token)
return parsed.String(), nil
}
func fromSoruceRepo(s string) bool {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

fromSourceRepo()

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.

I fix it.

Comment threadpkg/avancement/pull_request.go
Comment threadpkg/git/repository.go
return err
}

func (r *Repository) Walk(base string, cb func(prefix, name string) error) error {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@bigkevmcd wrote,

I think it might be nicer to have a "Local" implementation of the Source interface.
All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

If that avoided the need for passing local bool into Repository.Walk I'd be very happy. It's confusing to see method calls like

err := source.Walk(filePath, false, func(prefix, name string) error {

because it's not obvious what 'false' means in that context. Also,

repoBase = filepath.Join(r.LocalPath, "config")

Earlier in copy.go we saw,

// pathForDestServiceConfig defines where in a 'gitops' repository the local config file
// for a given service should live.
func pathForDestServiceConfig(serviceName, name string) string {
return filepath.Join("services/", serviceName, "base", name)
}

Even if you can refactor out a local Source.Walk() it would still be good to keep filepath manipulation in dedicated functions.

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.

OK. I'll try it.

@akihikokuroda
akihikokurodaforce-pushed the local branch 3 times, most recently from 22a26b7 to ea2e9cbCompareApril 1, 2020 17:23
@akihikokuroda

Copy link
Copy Markdown
ContributorAuthor

I implemented the LocalSource. It looks much cleaner now. Thanks!

@mnuttall
mnuttall self-requested a review April 2, 2020 09:02
@mnuttall

Copy link
Copy Markdown
Collaborator

That's a great improvement - thank you Aki :)

@mnuttall
mnuttall merged commit 2fb244d into rhd-gitops-example:masterApr 2, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@akihikokuroda@bigkevmcd@mnuttall
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' copy from source repo by akihikokuroda · Pull Request #31 · rhd-gitops-example/services · GitHub
Skip to content

copy from source repo - #31

Merged
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local
Apr 2, 2020
Merged

copy from source repo#31
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local

Conversation

@akihikokuroda

Copy link
Copy Markdown
Contributor

This implements #19.

When --from is a local path, it copies /path/to/local/repo/config/* to url.to.target.repo/services/svc-name/base/config/*.

@bigkevmcd

Copy link
Copy Markdown
Collaborator

@akihikokuroda looks like this needs a rebase for the debug functionality?

@bigkevmcdbigkevmcd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it might be nicer to have a "Local" implementation of the Source interface.

All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

Comment threadpkg/avancement/service_manager.go Outdated
if err != nil {
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

s/Soruce/Source/

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.

Thanks, I fix it.

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Maybe this should be "" rather than something that looks like a repo?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The fromURL is a directory path from the command line. The repoFactory needs a n url format string. I'll change the repoFactory to take "".

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Comment threadpkg/avancement/service_manager.go Outdated
parsed.User = url.UserPassword("promotion", a.Token)
return parsed.String(), nil
}
func fromSoruceRepo(s string) bool {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

fromSourceRepo()

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.

I fix it.

Comment threadpkg/avancement/pull_request.go
Comment threadpkg/git/repository.go
return err
}

func (r *Repository) Walk(base string, cb func(prefix, name string) error) error {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@bigkevmcd wrote,

I think it might be nicer to have a "Local" implementation of the Source interface.
All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

If that avoided the need for passing local bool into Repository.Walk I'd be very happy. It's confusing to see method calls like

err := source.Walk(filePath, false, func(prefix, name string) error {

because it's not obvious what 'false' means in that context. Also,

repoBase = filepath.Join(r.LocalPath, "config")

Earlier in copy.go we saw,

// pathForDestServiceConfig defines where in a 'gitops' repository the local config file
// for a given service should live.
func pathForDestServiceConfig(serviceName, name string) string {
return filepath.Join("services/", serviceName, "base", name)
}

Even if you can refactor out a local Source.Walk() it would still be good to keep filepath manipulation in dedicated functions.

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.

OK. I'll try it.

@akihikokuroda
akihikokurodaforce-pushed the local branch 3 times, most recently from 22a26b7 to ea2e9cbCompareApril 1, 2020 17:23
@akihikokuroda

Copy link
Copy Markdown
ContributorAuthor

I implemented the LocalSource. It looks much cleaner now. Thanks!

@mnuttall
mnuttall self-requested a review April 2, 2020 09:02
@mnuttall

Copy link
Copy Markdown
Collaborator

That's a great improvement - thank you Aki :)

@mnuttall
mnuttall merged commit 2fb244d into rhd-gitops-example:masterApr 2, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

copy from source repo - #31

Merged
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local
Apr 2, 2020
Merged

copy from source repo#31
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local

Conversation

@akihikokuroda

Copy link
Copy Markdown
Contributor

This implements #19.

When --from is a local path, it copies /path/to/local/repo/config/* to url.to.target.repo/services/svc-name/base/config/*.

@bigkevmcd

Copy link
Copy Markdown
Collaborator

@akihikokuroda looks like this needs a rebase for the debug functionality?

@bigkevmcdbigkevmcd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it might be nicer to have a "Local" implementation of the Source interface.

All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

Comment threadpkg/avancement/service_manager.go Outdated
if err != nil {
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

s/Soruce/Source/

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.

Thanks, I fix it.

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Maybe this should be "" rather than something that looks like a repo?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The fromURL is a directory path from the command line. The repoFactory needs a n url format string. I'll change the repoFactory to take "".

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Comment threadpkg/avancement/service_manager.go Outdated
parsed.User = url.UserPassword("promotion", a.Token)
return parsed.String(), nil
}
func fromSoruceRepo(s string) bool {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

fromSourceRepo()

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.

I fix it.

Comment threadpkg/avancement/pull_request.go
Comment threadpkg/git/repository.go
return err
}

func (r *Repository) Walk(base string, cb func(prefix, name string) error) error {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@bigkevmcd wrote,

I think it might be nicer to have a "Local" implementation of the Source interface.
All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

If that avoided the need for passing local bool into Repository.Walk I'd be very happy. It's confusing to see method calls like

err := source.Walk(filePath, false, func(prefix, name string) error {

because it's not obvious what 'false' means in that context. Also,

repoBase = filepath.Join(r.LocalPath, "config")

Earlier in copy.go we saw,

// pathForDestServiceConfig defines where in a 'gitops' repository the local config file
// for a given service should live.
func pathForDestServiceConfig(serviceName, name string) string {
return filepath.Join("services/", serviceName, "base", name)
}

Even if you can refactor out a local Source.Walk() it would still be good to keep filepath manipulation in dedicated functions.

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.

OK. I'll try it.

@akihikokuroda
akihikokurodaforce-pushed the local branch 3 times, most recently from 22a26b7 to ea2e9cbCompareApril 1, 2020 17:23
@akihikokuroda

Copy link
Copy Markdown
ContributorAuthor

I implemented the LocalSource. It looks much cleaner now. Thanks!

@mnuttall
mnuttall self-requested a review April 2, 2020 09:02
@mnuttall

Copy link
Copy Markdown
Collaborator

That's a great improvement - thank you Aki :)

@mnuttall
mnuttall merged commit 2fb244d into rhd-gitops-example:masterApr 2, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@akihikokuroda@bigkevmcd@mnuttall
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' copy from source repo by akihikokuroda · Pull Request #31 · rhd-gitops-example/services · GitHub
Skip to content

copy from source repo - #31

Merged
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local
Apr 2, 2020
Merged

copy from source repo#31
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local

Conversation

@akihikokuroda

Copy link
Copy Markdown
Contributor

This implements #19.

When --from is a local path, it copies /path/to/local/repo/config/* to url.to.target.repo/services/svc-name/base/config/*.

@bigkevmcd

Copy link
Copy Markdown
Collaborator

@akihikokuroda looks like this needs a rebase for the debug functionality?

@bigkevmcdbigkevmcd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it might be nicer to have a "Local" implementation of the Source interface.

All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

Comment threadpkg/avancement/service_manager.go Outdated
if err != nil {
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

s/Soruce/Source/

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.

Thanks, I fix it.

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Maybe this should be "" rather than something that looks like a repo?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The fromURL is a directory path from the command line. The repoFactory needs a n url format string. I'll change the repoFactory to take "".

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Comment threadpkg/avancement/service_manager.go Outdated
parsed.User = url.UserPassword("promotion", a.Token)
return parsed.String(), nil
}
func fromSoruceRepo(s string) bool {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

fromSourceRepo()

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.

I fix it.

Comment threadpkg/avancement/pull_request.go
Comment threadpkg/git/repository.go
return err
}

func (r *Repository) Walk(base string, cb func(prefix, name string) error) error {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@bigkevmcd wrote,

I think it might be nicer to have a "Local" implementation of the Source interface.
All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

If that avoided the need for passing local bool into Repository.Walk I'd be very happy. It's confusing to see method calls like

err := source.Walk(filePath, false, func(prefix, name string) error {

because it's not obvious what 'false' means in that context. Also,

repoBase = filepath.Join(r.LocalPath, "config")

Earlier in copy.go we saw,

// pathForDestServiceConfig defines where in a 'gitops' repository the local config file
// for a given service should live.
func pathForDestServiceConfig(serviceName, name string) string {
return filepath.Join("services/", serviceName, "base", name)
}

Even if you can refactor out a local Source.Walk() it would still be good to keep filepath manipulation in dedicated functions.

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.

OK. I'll try it.

@akihikokuroda
akihikokurodaforce-pushed the local branch 3 times, most recently from 22a26b7 to ea2e9cbCompareApril 1, 2020 17:23
@akihikokuroda

Copy link
Copy Markdown
ContributorAuthor

I implemented the LocalSource. It looks much cleaner now. Thanks!

@mnuttall
mnuttall self-requested a review April 2, 2020 09:02
@mnuttall

Copy link
Copy Markdown
Collaborator

That's a great improvement - thank you Aki :)

@mnuttall
mnuttall merged commit 2fb244d into rhd-gitops-example:masterApr 2, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@akihikokuroda@bigkevmcd@mnuttall
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' copy from source repo by akihikokuroda · Pull Request #31 · rhd-gitops-example/services · GitHub
Skip to content

copy from source repo - #31

Merged
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local
Apr 2, 2020
Merged

copy from source repo#31
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local

Conversation

@akihikokuroda

Copy link
Copy Markdown
Contributor

This implements #19.

When --from is a local path, it copies /path/to/local/repo/config/* to url.to.target.repo/services/svc-name/base/config/*.

@bigkevmcd

Copy link
Copy Markdown
Collaborator

@akihikokuroda looks like this needs a rebase for the debug functionality?

@bigkevmcdbigkevmcd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it might be nicer to have a "Local" implementation of the Source interface.

All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

Comment threadpkg/avancement/service_manager.go Outdated
if err != nil {
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

s/Soruce/Source/

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.

Thanks, I fix it.

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Maybe this should be "" rather than something that looks like a repo?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The fromURL is a directory path from the command line. The repoFactory needs a n url format string. I'll change the repoFactory to take "".

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Comment threadpkg/avancement/service_manager.go Outdated
parsed.User = url.UserPassword("promotion", a.Token)
return parsed.String(), nil
}
func fromSoruceRepo(s string) bool {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

fromSourceRepo()

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.

I fix it.

Comment threadpkg/avancement/pull_request.go
Comment threadpkg/git/repository.go
return err
}

func (r *Repository) Walk(base string, cb func(prefix, name string) error) error {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@bigkevmcd wrote,

I think it might be nicer to have a "Local" implementation of the Source interface.
All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

If that avoided the need for passing local bool into Repository.Walk I'd be very happy. It's confusing to see method calls like

err := source.Walk(filePath, false, func(prefix, name string) error {

because it's not obvious what 'false' means in that context. Also,

repoBase = filepath.Join(r.LocalPath, "config")

Earlier in copy.go we saw,

// pathForDestServiceConfig defines where in a 'gitops' repository the local config file
// for a given service should live.
func pathForDestServiceConfig(serviceName, name string) string {
return filepath.Join("services/", serviceName, "base", name)
}

Even if you can refactor out a local Source.Walk() it would still be good to keep filepath manipulation in dedicated functions.

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.

OK. I'll try it.

@akihikokuroda
akihikokurodaforce-pushed the local branch 3 times, most recently from 22a26b7 to ea2e9cbCompareApril 1, 2020 17:23
@akihikokuroda

Copy link
Copy Markdown
ContributorAuthor

I implemented the LocalSource. It looks much cleaner now. Thanks!

@mnuttall
mnuttall self-requested a review April 2, 2020 09:02
@mnuttall

Copy link
Copy Markdown
Collaborator

That's a great improvement - thank you Aki :)

@mnuttall
mnuttall merged commit 2fb244d into rhd-gitops-example:masterApr 2, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@akihikokuroda@bigkevmcd@mnuttall
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' copy from source repo by akihikokuroda · Pull Request #31 · rhd-gitops-example/services · GitHub
Skip to content

copy from source repo - #31

Merged
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local
Apr 2, 2020
Merged

copy from source repo#31
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local

Conversation

@akihikokuroda

Copy link
Copy Markdown
Contributor

This implements #19.

When --from is a local path, it copies /path/to/local/repo/config/* to url.to.target.repo/services/svc-name/base/config/*.

@bigkevmcd

Copy link
Copy Markdown
Collaborator

@akihikokuroda looks like this needs a rebase for the debug functionality?

@bigkevmcdbigkevmcd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it might be nicer to have a "Local" implementation of the Source interface.

All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

Comment threadpkg/avancement/service_manager.go Outdated
if err != nil {
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

s/Soruce/Source/

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.

Thanks, I fix it.

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Maybe this should be "" rather than something that looks like a repo?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The fromURL is a directory path from the command line. The repoFactory needs a n url format string. I'll change the repoFactory to take "".

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Comment threadpkg/avancement/service_manager.go Outdated
parsed.User = url.UserPassword("promotion", a.Token)
return parsed.String(), nil
}
func fromSoruceRepo(s string) bool {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

fromSourceRepo()

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.

I fix it.

Comment threadpkg/avancement/pull_request.go
Comment threadpkg/git/repository.go
return err
}

func (r *Repository) Walk(base string, cb func(prefix, name string) error) error {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@bigkevmcd wrote,

I think it might be nicer to have a "Local" implementation of the Source interface.
All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

If that avoided the need for passing local bool into Repository.Walk I'd be very happy. It's confusing to see method calls like

err := source.Walk(filePath, false, func(prefix, name string) error {

because it's not obvious what 'false' means in that context. Also,

repoBase = filepath.Join(r.LocalPath, "config")

Earlier in copy.go we saw,

// pathForDestServiceConfig defines where in a 'gitops' repository the local config file
// for a given service should live.
func pathForDestServiceConfig(serviceName, name string) string {
return filepath.Join("services/", serviceName, "base", name)
}

Even if you can refactor out a local Source.Walk() it would still be good to keep filepath manipulation in dedicated functions.

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.

OK. I'll try it.

@akihikokuroda
akihikokurodaforce-pushed the local branch 3 times, most recently from 22a26b7 to ea2e9cbCompareApril 1, 2020 17:23
@akihikokuroda

Copy link
Copy Markdown
ContributorAuthor

I implemented the LocalSource. It looks much cleaner now. Thanks!

@mnuttall
mnuttall self-requested a review April 2, 2020 09:02
@mnuttall

Copy link
Copy Markdown
Collaborator

That's a great improvement - thank you Aki :)

@mnuttall
mnuttall merged commit 2fb244d into rhd-gitops-example:masterApr 2, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

copy from source repo - #31

Merged
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local
Apr 2, 2020
Merged

copy from source repo#31
mnuttall merged 3 commits into
rhd-gitops-example:masterfrom
akihikokuroda:local

Conversation

@akihikokuroda

Copy link
Copy Markdown
Contributor

This implements #19.

When --from is a local path, it copies /path/to/local/repo/config/* to url.to.target.repo/services/svc-name/base/config/*.

@bigkevmcd

Copy link
Copy Markdown
Collaborator

@akihikokuroda looks like this needs a rebase for the debug functionality?

@bigkevmcdbigkevmcd left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it might be nicer to have a "Local" implementation of the Source interface.

All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

Comment threadpkg/avancement/service_manager.go Outdated
if err != nil {
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

s/Soruce/Source/

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.

Thanks, I fix it.

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Maybe this should be "" rather than something that looks like a repo?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The fromURL is a directory path from the command line. The repoFactory needs a n url format string. I'll change the repoFactory to take "".

Comment threadpkg/avancement/service_manager.go Outdated
return fmt.Errorf("failed to copy service: %w", err)
copied := []string{}
if fromSoruceRepo(fromURL) {
source, err := s.repoFactory("https://source/sourceorg/sourcerepo", fromURL)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Agreed, this line is confusing. What kinds of values does fromURL have in these cases? We expect the source to be a clone of a functional git repository in our primary use case but do we have to know the url it was cloned from? Is that what fromURL is?

Comment threadpkg/avancement/service_manager.go Outdated
parsed.User = url.UserPassword("promotion", a.Token)
return parsed.String(), nil
}
func fromSoruceRepo(s string) bool {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

fromSourceRepo()

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.

I fix it.

Comment threadpkg/avancement/pull_request.go
Comment threadpkg/git/repository.go
return err
}

func (r *Repository) Walk(base string, cb func(prefix, name string) error) error {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@bigkevmcd wrote,

I think it might be nicer to have a "Local" implementation of the Source interface.
All it needs to do is implement Walk, based on the local path, rather than hacking the Repository Walk to do double-duty.

If that avoided the need for passing local bool into Repository.Walk I'd be very happy. It's confusing to see method calls like

err := source.Walk(filePath, false, func(prefix, name string) error {

because it's not obvious what 'false' means in that context. Also,

repoBase = filepath.Join(r.LocalPath, "config")

Earlier in copy.go we saw,

// pathForDestServiceConfig defines where in a 'gitops' repository the local config file
// for a given service should live.
func pathForDestServiceConfig(serviceName, name string) string {
return filepath.Join("services/", serviceName, "base", name)
}

Even if you can refactor out a local Source.Walk() it would still be good to keep filepath manipulation in dedicated functions.

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.

OK. I'll try it.

@akihikokuroda
akihikokurodaforce-pushed the local branch 3 times, most recently from 22a26b7 to ea2e9cbCompareApril 1, 2020 17:23
@akihikokuroda

Copy link
Copy Markdown
ContributorAuthor

I implemented the LocalSource. It looks much cleaner now. Thanks!

@mnuttall
mnuttall self-requested a review April 2, 2020 09:02
@mnuttall

Copy link
Copy Markdown
Collaborator

That's a great improvement - thank you Aki :)

@mnuttall
mnuttall merged commit 2fb244d into rhd-gitops-example:masterApr 2, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@akihikokuroda@bigkevmcd@mnuttall