Last active
August 9, 2022 14:59
-
-
Save kyle-west/720df27659d372e395ec86317f506113 to your computer and use it in GitHub Desktop.
See what components need to update in what order (requires bower)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# bashful import json | |
target_repo=$1 | |
target_version=$2 | |
echo "Please consider running 'bower install' before running 'migrate-to'" | |
sleep 3s; | |
echo; | |
json <(bower list --json --offline) " | |
let depLines = [] | |
function printDeps(node, padding = '', path = '$(basename $(pwd))') { | |
Object.getOwnPropertyNames(node.dependencies).forEach(dep => { | |
let namedPath = \`\${path} << \${dep} (\${node.dependencies[dep].pkgMeta.version})\`; | |
depLines.push(namedPath); | |
printDeps(node.dependencies[dep], padding + ' ', path + ' << ' + dep) | |
}) | |
} | |
printDeps($) | |
let filtered = depLines.filter(line => { | |
return line.includes('$target_repo (') && !line.includes('($target_version') | |
}) | |
// console.log(filtered) | |
let orders = []; | |
filtered.forEach(f => { | |
let newOrders = f.split(' << ').slice(0,-1) | |
for (let i = 0; i < newOrders.length; ++i) { | |
orders[i] = orders[i] || []; | |
if (!orders[i].includes(newOrders[i])) orders[i].push(newOrders[i]) | |
} | |
}) | |
let seenRepos = []; | |
orders = orders.reverse().map(order => { | |
return order.filter(repo => { | |
let seen = seenRepos.includes(repo); | |
if (!seen) seenRepos.push(repo); | |
return !seen; | |
}) | |
}); | |
console.log('To upgrade to $target_repo v$target_version, you will need to update dependancies in the follow order:\n', orders) | |
"; |
Install: bashful install https://gist.github.com/kyle-west/720df27659d372e395ec86317f506113
Run: From app, tree or tree-v8-person, migrate-to [package] v[next-major]
migrate-to fs-person-data-service v5
Then it spits out the order in which to update all the repos.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It's a WIP. Come bug me for how to use this if you end up needing it.