scripto 0.0.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +22 -0
- data/.gitignore +0 -18
- data/.rubocop.yml +15 -0
- data/.vscode/extensions.json +3 -0
- data/.vscode/settings.json +3 -0
- data/Gemfile +10 -2
- data/Gemfile.lock +97 -0
- data/README.md +22 -14
- data/Rakefile +3 -19
- data/justfile +54 -0
- data/lib/scripto/csv_commands.rb +18 -24
- data/lib/scripto/file_commands.rb +5 -5
- data/lib/scripto/log_commands.rb +112 -0
- data/lib/scripto/main.rb +1 -4
- data/lib/scripto/misc_commands.rb +5 -9
- data/lib/scripto/run_commands.rb +13 -15
- data/lib/scripto/version.rb +1 -1
- data/lib/scripto.rb +8 -8
- data/logo.svg +12 -0
- data/mise.toml +2 -0
- data/scripto.gemspec +18 -20
- metadata +22 -60
- data/.travis.yml +0 -9
- data/Vagrantfile +0 -16
- data/lib/scripto/print_commands.rb +0 -54
- data/test/helper.rb +0 -26
- data/test/test_csv.rb +0 -70
- data/test/test_file.rb +0 -220
- data/test/test_misc.rb +0 -53
- data/test/test_print.rb +0 -28
- data/test/test_run.rb +0 -103
data/lib/scripto/version.rb
CHANGED
data/lib/scripto.rb
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
1
|
+
require "scripto/csv_commands"
|
|
2
|
+
require "scripto/file_commands"
|
|
3
|
+
require "scripto/log_commands"
|
|
4
|
+
require "scripto/misc_commands"
|
|
5
|
+
require "scripto/run_commands"
|
|
6
|
+
require "scripto/version"
|
|
7
|
+
require "scripto/main"
|
|
8
8
|
|
|
9
9
|
module Scripto
|
|
10
10
|
extend CsvCommands
|
|
11
11
|
extend FileCommands
|
|
12
|
+
extend LogCommands
|
|
12
13
|
extend MiscCommands
|
|
13
|
-
extend PrintCommands
|
|
14
14
|
extend RunCommands
|
|
15
15
|
end
|
data/logo.svg
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg width="520" height="200" viewBox="0 0 520 200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="520" height="200" fill="#B3ECFF"/>
|
|
3
|
+
<path d="M148.586 111.08C148.586 115.944 146.762 119.752 143.114 122.504C139.466 125.256 134.09 126.632 126.986 126.632C124.298 126.632 121.802 126.44 119.498 126.056C117.194 125.672 115.21 125.096 113.546 124.328C111.946 123.496 110.666 122.472 109.706 121.256C108.81 120.04 108.362 118.6 108.362 116.936C108.362 115.4 108.682 114.12 109.322 113.096C109.962 112.008 110.73 111.112 111.626 110.408C113.482 111.432 115.594 112.36 117.962 113.192C120.394 113.96 123.178 114.344 126.314 114.344C128.298 114.344 129.802 114.056 130.826 113.48C131.914 112.904 132.458 112.136 132.458 111.176C132.458 110.28 132.074 109.576 131.306 109.064C130.538 108.552 129.258 108.136 127.466 107.816L124.586 107.24C119.018 106.152 114.858 104.456 112.106 102.152C109.418 99.784 108.074 96.424 108.074 92.072C108.074 89.704 108.586 87.56 109.61 85.64C110.634 83.72 112.074 82.12 113.93 80.84C115.786 79.56 117.994 78.568 120.554 77.864C123.178 77.16 126.058 76.808 129.194 76.808C131.562 76.808 133.77 77 135.818 77.384C137.93 77.704 139.754 78.216 141.29 78.92C142.826 79.624 144.042 80.552 144.938 81.704C145.834 82.792 146.282 84.104 146.282 85.64C146.282 87.112 145.994 88.392 145.418 89.48C144.906 90.504 144.234 91.368 143.402 92.072C142.89 91.752 142.122 91.432 141.098 91.112C140.074 90.728 138.954 90.408 137.738 90.152C136.522 89.832 135.274 89.576 133.994 89.384C132.778 89.192 131.658 89.096 130.634 89.096C128.522 89.096 126.89 89.352 125.738 89.864C124.586 90.312 124.01 91.048 124.01 92.072C124.01 92.776 124.33 93.352 124.97 93.8C125.61 94.248 126.826 94.664 128.618 95.048L131.594 95.72C137.738 97.128 142.09 99.08 144.65 101.576C147.274 104.008 148.586 107.176 148.586 111.08ZM183.249 89.768C181.649 89.768 180.113 90.024 178.641 90.536C177.233 91.048 175.985 91.816 174.897 92.84C173.873 93.8 173.041 95.016 172.401 96.488C171.761 97.96 171.441 99.688 171.441 101.672C171.441 105.64 172.561 108.616 174.801 110.6C177.105 112.584 179.889 113.576 183.153 113.576C185.073 113.576 186.737 113.352 188.145 112.904C189.553 112.456 190.801 111.976 191.889 111.464C193.169 112.36 194.129 113.352 194.769 114.44C195.409 115.464 195.729 116.712 195.729 118.184C195.729 120.808 194.481 122.856 191.985 124.328C189.489 125.736 186.033 126.44 181.617 126.44C177.585 126.44 173.937 125.864 170.673 124.712C167.409 123.496 164.593 121.832 162.225 119.72C159.921 117.544 158.129 114.952 156.849 111.944C155.569 108.936 154.929 105.608 154.929 101.96C154.929 97.736 155.601 94.056 156.945 90.92C158.353 87.72 160.241 85.096 162.609 83.048C164.977 81 167.697 79.464 170.769 78.44C173.905 77.416 177.201 76.904 180.657 76.904C185.265 76.904 188.817 77.736 191.313 79.4C193.809 81.064 195.057 83.208 195.057 85.832C195.057 87.048 194.769 88.2 194.193 89.288C193.617 90.312 192.945 91.208 192.177 91.976C191.089 91.464 189.777 90.984 188.241 90.536C186.705 90.024 185.041 89.768 183.249 89.768ZM220.234 124.904C219.594 125.096 218.57 125.288 217.162 125.48C215.818 125.672 214.41 125.768 212.938 125.768C211.53 125.768 210.25 125.672 209.098 125.48C208.01 125.288 207.082 124.904 206.314 124.328C205.546 123.752 204.938 122.984 204.49 122.024C204.106 121 203.914 119.688 203.914 118.088V89.288C203.914 87.816 204.17 86.568 204.682 85.544C205.258 84.456 206.058 83.496 207.082 82.664C208.106 81.832 209.354 81.096 210.826 80.456C212.362 79.752 213.994 79.144 215.722 78.632C217.45 78.12 219.242 77.736 221.098 77.48C222.954 77.16 224.81 77 226.666 77C229.738 77 232.17 77.608 233.962 78.824C235.754 79.976 236.65 81.896 236.65 84.584C236.65 85.48 236.522 86.376 236.266 87.272C236.01 88.104 235.69 88.872 235.306 89.576C233.962 89.576 232.586 89.64 231.178 89.768C229.77 89.896 228.394 90.088 227.05 90.344C225.706 90.6 224.426 90.888 223.21 91.208C222.058 91.464 221.066 91.784 220.234 92.168V124.904ZM242.999 65.384C242.999 62.952 243.799 60.904 245.399 59.24C247.063 57.576 249.239 56.744 251.927 56.744C254.615 56.744 256.759 57.576 258.359 59.24C260.023 60.904 260.855 62.952 260.855 65.384C260.855 67.816 260.023 69.864 258.359 71.528C256.759 73.192 254.615 74.024 251.927 74.024C249.239 74.024 247.063 73.192 245.399 71.528C243.799 69.864 242.999 67.816 242.999 65.384ZM260.087 124.904C259.383 125.032 258.327 125.192 256.919 125.384C255.575 125.64 254.199 125.768 252.791 125.768C251.383 125.768 250.103 125.672 248.951 125.48C247.863 125.288 246.935 124.904 246.167 124.328C245.399 123.752 244.791 122.984 244.343 122.024C243.959 121 243.767 119.688 243.767 118.088V79.016C244.471 78.888 245.495 78.728 246.839 78.536C248.247 78.28 249.655 78.152 251.063 78.152C252.471 78.152 253.719 78.248 254.807 78.44C255.959 78.632 256.919 79.016 257.687 79.592C258.455 80.168 259.031 80.968 259.415 81.992C259.863 82.952 260.087 84.232 260.087 85.832V124.904ZM291.884 76.904C295.724 76.904 299.276 77.416 302.54 78.44C305.868 79.4 308.716 80.904 311.084 82.952C313.452 85 315.308 87.592 316.652 90.728C317.996 93.8 318.668 97.48 318.668 101.768C318.668 105.864 318.092 109.448 316.94 112.52C315.788 115.592 314.156 118.184 312.044 120.296C309.932 122.344 307.372 123.88 304.364 124.904C301.42 125.928 298.124 126.44 294.476 126.44C291.724 126.44 289.164 126.024 286.796 125.192V141.128C286.156 141.32 285.132 141.512 283.724 141.704C282.316 141.96 280.876 142.088 279.404 142.088C277.996 142.088 276.716 141.992 275.564 141.8C274.476 141.608 273.548 141.224 272.78 140.648C272.012 140.072 271.436 139.272 271.052 138.248C270.668 137.288 270.476 136.008 270.476 134.408V88.328C270.476 86.6 270.828 85.192 271.532 84.104C272.3 83.016 273.324 82.024 274.604 81.128C276.588 79.848 279.052 78.824 281.996 78.056C284.94 77.288 288.236 76.904 291.884 76.904ZM292.076 113.576C298.668 113.576 301.964 109.64 301.964 101.768C301.964 97.672 301.132 94.632 299.468 92.648C297.868 90.664 295.532 89.672 292.46 89.672C291.244 89.672 290.156 89.832 289.196 90.152C288.236 90.408 287.404 90.728 286.7 91.112V112.232C287.468 112.616 288.3 112.936 289.196 113.192C290.092 113.448 291.052 113.576 292.076 113.576ZM342.953 108.968C342.953 110.632 343.465 111.816 344.489 112.52C345.577 113.224 347.081 113.576 349.001 113.576C349.961 113.576 350.953 113.512 351.977 113.384C353.001 113.192 353.897 112.968 354.665 112.712C355.241 113.416 355.721 114.216 356.105 115.112C356.553 115.944 356.777 116.968 356.777 118.184C356.777 120.616 355.849 122.6 353.993 124.136C352.201 125.672 349.001 126.44 344.393 126.44C338.761 126.44 334.409 125.16 331.337 122.6C328.329 120.04 326.825 115.88 326.825 110.12V69.032C327.529 68.84 328.521 68.648 329.801 68.456C331.145 68.2 332.553 68.072 334.025 68.072C336.841 68.072 339.017 68.584 340.553 69.608C342.153 70.568 342.953 72.648 342.953 75.848V81.992H355.529C355.913 82.696 356.265 83.592 356.585 84.68C356.969 85.704 357.161 86.856 357.161 88.136C357.161 90.376 356.649 92.008 355.625 93.032C354.665 93.992 353.353 94.472 351.689 94.472H342.953V108.968ZM412.796 101.672C412.796 105.64 412.188 109.192 410.972 112.328C409.756 115.4 408.028 117.992 405.788 120.104C403.612 122.216 400.988 123.816 397.916 124.904C394.844 125.992 391.42 126.536 387.644 126.536C383.868 126.536 380.444 125.96 377.372 124.808C374.3 123.656 371.644 122.024 369.404 119.912C367.228 117.736 365.532 115.112 364.316 112.04C363.1 108.968 362.492 105.512 362.492 101.672C362.492 97.896 363.1 94.472 364.316 91.4C365.532 88.328 367.228 85.736 369.404 83.624C371.644 81.448 374.3 79.784 377.372 78.632C380.444 77.48 383.868 76.904 387.644 76.904C391.42 76.904 394.844 77.512 397.916 78.728C400.988 79.88 403.612 81.544 405.788 83.72C408.028 85.832 409.756 88.424 410.972 91.496C412.188 94.568 412.796 97.96 412.796 101.672ZM379.196 101.672C379.196 105.576 379.932 108.584 381.404 110.696C382.94 112.744 385.052 113.768 387.74 113.768C390.428 113.768 392.476 112.712 393.884 110.6C395.356 108.488 396.092 105.512 396.092 101.672C396.092 97.832 395.356 94.888 393.884 92.84C392.412 90.728 390.332 89.672 387.644 89.672C384.956 89.672 382.876 90.728 381.404 92.84C379.932 94.888 379.196 97.832 379.196 101.672Z" fill="#0186B3"/>
|
|
4
|
+
<path d="M148.586 111.08C148.586 115.944 146.762 119.752 143.114 122.504C139.466 125.256 134.09 126.632 126.986 126.632C124.298 126.632 121.802 126.44 119.498 126.056C117.194 125.672 115.21 125.096 113.546 124.328C111.946 123.496 110.666 122.472 109.706 121.256C108.81 120.04 108.362 118.6 108.362 116.936C108.362 115.4 108.682 114.12 109.322 113.096C109.962 112.008 110.73 111.112 111.626 110.408C113.482 111.432 115.594 112.36 117.962 113.192C120.394 113.96 123.178 114.344 126.314 114.344C128.298 114.344 129.802 114.056 130.826 113.48C131.914 112.904 132.458 112.136 132.458 111.176C132.458 110.28 132.074 109.576 131.306 109.064C130.538 108.552 129.258 108.136 127.466 107.816L124.586 107.24C119.018 106.152 114.858 104.456 112.106 102.152C109.418 99.784 108.074 96.424 108.074 92.072C108.074 89.704 108.586 87.56 109.61 85.64C110.634 83.72 112.074 82.12 113.93 80.84C115.786 79.56 117.994 78.568 120.554 77.864C123.178 77.16 126.058 76.808 129.194 76.808C131.562 76.808 133.77 77 135.818 77.384C137.93 77.704 139.754 78.216 141.29 78.92C142.826 79.624 144.042 80.552 144.938 81.704C145.834 82.792 146.282 84.104 146.282 85.64C146.282 87.112 145.994 88.392 145.418 89.48C144.906 90.504 144.234 91.368 143.402 92.072C142.89 91.752 142.122 91.432 141.098 91.112C140.074 90.728 138.954 90.408 137.738 90.152C136.522 89.832 135.274 89.576 133.994 89.384C132.778 89.192 131.658 89.096 130.634 89.096C128.522 89.096 126.89 89.352 125.738 89.864C124.586 90.312 124.01 91.048 124.01 92.072C124.01 92.776 124.33 93.352 124.97 93.8C125.61 94.248 126.826 94.664 128.618 95.048L131.594 95.72C137.738 97.128 142.09 99.08 144.65 101.576C147.274 104.008 148.586 107.176 148.586 111.08Z" fill="#0186B3"/>
|
|
5
|
+
<path d="M183.249 89.768C181.649 89.768 180.113 90.024 178.641 90.536C177.233 91.048 175.985 91.816 174.897 92.84C173.873 93.8 173.041 95.016 172.401 96.488C171.761 97.96 171.441 99.688 171.441 101.672C171.441 105.64 172.561 108.616 174.801 110.6C177.105 112.584 179.889 113.576 183.153 113.576C185.073 113.576 186.737 113.352 188.145 112.904C189.553 112.456 190.801 111.976 191.889 111.464C193.169 112.36 194.129 113.352 194.769 114.44C195.409 115.464 195.729 116.712 195.729 118.184C195.729 120.808 194.481 122.856 191.985 124.328C189.489 125.736 186.033 126.44 181.617 126.44C177.585 126.44 173.937 125.864 170.673 124.712C167.409 123.496 164.593 121.832 162.225 119.72C159.921 117.544 158.129 114.952 156.849 111.944C155.569 108.936 154.929 105.608 154.929 101.96C154.929 97.736 155.601 94.056 156.945 90.92C158.353 87.72 160.241 85.096 162.609 83.048C164.977 81 167.697 79.464 170.769 78.44C173.905 77.416 177.201 76.904 180.657 76.904C185.265 76.904 188.817 77.736 191.313 79.4C193.809 81.064 195.057 83.208 195.057 85.832C195.057 87.048 194.769 88.2 194.193 89.288C193.617 90.312 192.945 91.208 192.177 91.976C191.089 91.464 189.777 90.984 188.241 90.536C186.705 90.024 185.041 89.768 183.249 89.768Z" fill="#0186B3"/>
|
|
6
|
+
<path d="M220.234 124.904C219.594 125.096 218.57 125.288 217.162 125.48C215.818 125.672 214.41 125.768 212.938 125.768C211.53 125.768 210.25 125.672 209.098 125.48C208.01 125.288 207.082 124.904 206.314 124.328C205.546 123.752 204.938 122.984 204.49 122.024C204.106 121 203.914 119.688 203.914 118.088V89.288C203.914 87.816 204.17 86.568 204.682 85.544C205.258 84.456 206.058 83.496 207.082 82.664C208.106 81.832 209.354 81.096 210.826 80.456C212.362 79.752 213.994 79.144 215.722 78.632C217.45 78.12 219.242 77.736 221.098 77.48C222.954 77.16 224.81 77 226.666 77C229.738 77 232.17 77.608 233.962 78.824C235.754 79.976 236.65 81.896 236.65 84.584C236.65 85.48 236.522 86.376 236.266 87.272C236.01 88.104 235.69 88.872 235.306 89.576C233.962 89.576 232.586 89.64 231.178 89.768C229.77 89.896 228.394 90.088 227.05 90.344C225.706 90.6 224.426 90.888 223.21 91.208C222.058 91.464 221.066 91.784 220.234 92.168V124.904Z" fill="#0186B3"/>
|
|
7
|
+
<path d="M242.999 65.384C242.999 62.952 243.799 60.904 245.399 59.24C247.063 57.576 249.239 56.744 251.927 56.744C254.615 56.744 256.759 57.576 258.359 59.24C260.023 60.904 260.855 62.952 260.855 65.384C260.855 67.816 260.023 69.864 258.359 71.528C256.759 73.192 254.615 74.024 251.927 74.024C249.239 74.024 247.063 73.192 245.399 71.528C243.799 69.864 242.999 67.816 242.999 65.384ZM260.087 124.904C259.383 125.032 258.327 125.192 256.919 125.384C255.575 125.64 254.199 125.768 252.791 125.768C251.383 125.768 250.103 125.672 248.951 125.48C247.863 125.288 246.935 124.904 246.167 124.328C245.399 123.752 244.791 122.984 244.343 122.024C243.959 121 243.767 119.688 243.767 118.088V79.016C244.471 78.888 245.495 78.728 246.839 78.536C248.247 78.28 249.655 78.152 251.063 78.152C252.471 78.152 253.719 78.248 254.807 78.44C255.959 78.632 256.919 79.016 257.687 79.592C258.455 80.168 259.031 80.968 259.415 81.992C259.863 82.952 260.087 84.232 260.087 85.832V124.904Z" fill="#0186B3"/>
|
|
8
|
+
<path d="M291.884 76.904C295.724 76.904 299.276 77.416 302.54 78.44C305.868 79.4 308.716 80.904 311.084 82.952C313.452 85 315.308 87.592 316.652 90.728C317.996 93.8 318.668 97.48 318.668 101.768C318.668 105.864 318.092 109.448 316.94 112.52C315.788 115.592 314.156 118.184 312.044 120.296C309.932 122.344 307.372 123.88 304.364 124.904C301.42 125.928 298.124 126.44 294.476 126.44C291.724 126.44 289.164 126.024 286.796 125.192V141.128C286.156 141.32 285.132 141.512 283.724 141.704C282.316 141.96 280.876 142.088 279.404 142.088C277.996 142.088 276.716 141.992 275.564 141.8C274.476 141.608 273.548 141.224 272.78 140.648C272.012 140.072 271.436 139.272 271.052 138.248C270.668 137.288 270.476 136.008 270.476 134.408V88.328C270.476 86.6 270.828 85.192 271.532 84.104C272.3 83.016 273.324 82.024 274.604 81.128C276.588 79.848 279.052 78.824 281.996 78.056C284.94 77.288 288.236 76.904 291.884 76.904ZM292.076 113.576C298.668 113.576 301.964 109.64 301.964 101.768C301.964 97.672 301.132 94.632 299.468 92.648C297.868 90.664 295.532 89.672 292.46 89.672C291.244 89.672 290.156 89.832 289.196 90.152C288.236 90.408 287.404 90.728 286.7 91.112V112.232C287.468 112.616 288.3 112.936 289.196 113.192C290.092 113.448 291.052 113.576 292.076 113.576Z" fill="#0186B3"/>
|
|
9
|
+
<path d="M342.953 108.968C342.953 110.632 343.465 111.816 344.489 112.52C345.577 113.224 347.081 113.576 349.001 113.576C349.961 113.576 350.953 113.512 351.977 113.384C353.001 113.192 353.897 112.968 354.665 112.712C355.241 113.416 355.721 114.216 356.105 115.112C356.553 115.944 356.777 116.968 356.777 118.184C356.777 120.616 355.849 122.6 353.993 124.136C352.201 125.672 349.001 126.44 344.393 126.44C338.761 126.44 334.409 125.16 331.337 122.6C328.329 120.04 326.825 115.88 326.825 110.12V69.032C327.529 68.84 328.521 68.648 329.801 68.456C331.145 68.2 332.553 68.072 334.025 68.072C336.841 68.072 339.017 68.584 340.553 69.608C342.153 70.568 342.953 72.648 342.953 75.848V81.992H355.529C355.913 82.696 356.265 83.592 356.585 84.68C356.969 85.704 357.161 86.856 357.161 88.136C357.161 90.376 356.649 92.008 355.625 93.032C354.665 93.992 353.353 94.472 351.689 94.472H342.953V108.968Z" fill="#0186B3"/>
|
|
10
|
+
<path d="M412.796 101.672C412.796 105.64 412.188 109.192 410.972 112.328C409.756 115.4 408.028 117.992 405.788 120.104C403.612 122.216 400.988 123.816 397.916 124.904C394.844 125.992 391.42 126.536 387.644 126.536C383.868 126.536 380.444 125.96 377.372 124.808C374.3 123.656 371.644 122.024 369.404 119.912C367.228 117.736 365.532 115.112 364.316 112.04C363.1 108.968 362.492 105.512 362.492 101.672C362.492 97.896 363.1 94.472 364.316 91.4C365.532 88.328 367.228 85.736 369.404 83.624C371.644 81.448 374.3 79.784 377.372 78.632C380.444 77.48 383.868 76.904 387.644 76.904C391.42 76.904 394.844 77.512 397.916 78.728C400.988 79.88 403.612 81.544 405.788 83.72C408.028 85.832 409.756 88.424 410.972 91.496C412.188 94.568 412.796 97.96 412.796 101.672ZM379.196 101.672C379.196 105.576 379.932 108.584 381.404 110.696C382.94 112.744 385.052 113.768 387.74 113.768C390.428 113.768 392.476 112.712 393.884 110.6C395.356 108.488 396.092 105.512 396.092 101.672C396.092 97.832 395.356 94.888 393.884 92.84C392.412 90.728 390.332 89.672 387.644 89.672C384.956 89.672 382.876 90.728 381.404 92.84C379.932 94.888 379.196 97.832 379.196 101.672Z" fill="#0186B3"/>
|
|
11
|
+
<rect x="0.5" y="0.5" width="519" height="199" stroke="black" stroke-opacity="0.5"/>
|
|
12
|
+
</svg>
|
data/mise.toml
ADDED
data/scripto.gemspec
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
lib = File.expand_path(
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
-
require
|
|
3
|
+
require "scripto/version"
|
|
4
4
|
|
|
5
|
-
Gem::Specification.new do |
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
spec.authors = [ 'Adam Doppelt' ]
|
|
11
|
-
spec.email = [ 'amd@gurge.com' ]
|
|
12
|
-
spec.summary = 'Helpers for writing command line scripts. An extraction from Dwellable.'
|
|
13
|
-
spec.homepage = 'http://github.com/gurgeous/scripto'
|
|
14
|
-
spec.license = 'MIT'
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = "scripto"
|
|
7
|
+
s.version = Scripto::VERSION
|
|
8
|
+
s.authors = ["Adam Doppelt"]
|
|
9
|
+
s.email = ["amd@gurge.com"]
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
11
|
+
s.summary = "Helpers for writing command line scripts. An extraction from Dwellable."
|
|
12
|
+
s.homepage = "http://github.com/gurgeous/scripto"
|
|
13
|
+
s.license = "MIT"
|
|
14
|
+
s.required_ruby_version = ">= 3.4.0"
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
# what's in the gem?
|
|
17
|
+
s.files = `git ls-files -z`.split("\x0").reject { _1.match(%r{^test/}) }
|
|
18
|
+
s.require_paths = ["lib"]
|
|
19
|
+
|
|
20
|
+
# gem dependencies
|
|
21
|
+
s.add_dependency "csv", "~> 3.3" # required for 3.4
|
|
22
|
+
s.add_dependency "ostruct", "~> 0.0" # required for 3.4
|
|
25
23
|
end
|
metadata
CHANGED
|
@@ -1,105 +1,74 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: scripto
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adam Doppelt
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2026-01-27 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
13
|
+
name: csv
|
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
|
16
15
|
requirements:
|
|
17
16
|
- - "~>"
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
20
|
-
type: :
|
|
18
|
+
version: '3.3'
|
|
19
|
+
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
23
|
- - "~>"
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
25
|
+
version: '3.3'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
27
|
+
name: ostruct
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
30
|
- - "~>"
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
34
|
-
type: :
|
|
32
|
+
version: '0.0'
|
|
33
|
+
type: :runtime
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rake
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rubocop
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
description:
|
|
39
|
+
version: '0.0'
|
|
70
40
|
email:
|
|
71
41
|
- amd@gurge.com
|
|
72
42
|
executables: []
|
|
73
43
|
extensions: []
|
|
74
44
|
extra_rdoc_files: []
|
|
75
45
|
files:
|
|
46
|
+
- ".github/workflows/ci.yml"
|
|
76
47
|
- ".gitignore"
|
|
77
|
-
- ".
|
|
48
|
+
- ".rubocop.yml"
|
|
49
|
+
- ".vscode/extensions.json"
|
|
50
|
+
- ".vscode/settings.json"
|
|
78
51
|
- Gemfile
|
|
52
|
+
- Gemfile.lock
|
|
79
53
|
- LICENSE.txt
|
|
80
54
|
- README.md
|
|
81
55
|
- Rakefile
|
|
82
|
-
-
|
|
56
|
+
- justfile
|
|
83
57
|
- lib/scripto.rb
|
|
84
58
|
- lib/scripto/csv_commands.rb
|
|
85
59
|
- lib/scripto/file_commands.rb
|
|
60
|
+
- lib/scripto/log_commands.rb
|
|
86
61
|
- lib/scripto/main.rb
|
|
87
62
|
- lib/scripto/misc_commands.rb
|
|
88
|
-
- lib/scripto/print_commands.rb
|
|
89
63
|
- lib/scripto/run_commands.rb
|
|
90
64
|
- lib/scripto/version.rb
|
|
65
|
+
- logo.svg
|
|
66
|
+
- mise.toml
|
|
91
67
|
- scripto.gemspec
|
|
92
|
-
- test/helper.rb
|
|
93
|
-
- test/test_csv.rb
|
|
94
|
-
- test/test_file.rb
|
|
95
|
-
- test/test_misc.rb
|
|
96
|
-
- test/test_print.rb
|
|
97
|
-
- test/test_run.rb
|
|
98
68
|
homepage: http://github.com/gurgeous/scripto
|
|
99
69
|
licenses:
|
|
100
70
|
- MIT
|
|
101
71
|
metadata: {}
|
|
102
|
-
post_install_message:
|
|
103
72
|
rdoc_options: []
|
|
104
73
|
require_paths:
|
|
105
74
|
- lib
|
|
@@ -107,21 +76,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
107
76
|
requirements:
|
|
108
77
|
- - ">="
|
|
109
78
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
79
|
+
version: 3.4.0
|
|
111
80
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
81
|
requirements:
|
|
113
82
|
- - ">="
|
|
114
83
|
- !ruby/object:Gem::Version
|
|
115
84
|
version: '0'
|
|
116
85
|
requirements: []
|
|
117
|
-
rubygems_version: 3.
|
|
118
|
-
signing_key:
|
|
86
|
+
rubygems_version: 3.6.2
|
|
119
87
|
specification_version: 4
|
|
120
88
|
summary: Helpers for writing command line scripts. An extraction from Dwellable.
|
|
121
|
-
test_files:
|
|
122
|
-
- test/helper.rb
|
|
123
|
-
- test/test_csv.rb
|
|
124
|
-
- test/test_file.rb
|
|
125
|
-
- test/test_misc.rb
|
|
126
|
-
- test/test_print.rb
|
|
127
|
-
- test/test_run.rb
|
|
89
|
+
test_files: []
|
data/.travis.yml
DELETED
data/Vagrantfile
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Vagrant.configure('2') do |config|
|
|
2
|
-
config.vm.box = 'ubuntu/xenial64'
|
|
3
|
-
config.vm.provision 'shell', privileged: false, inline: <<-EOF
|
|
4
|
-
export DEBIAN_FRONTEND=noninteractive
|
|
5
|
-
|
|
6
|
-
# ruby 2.3
|
|
7
|
-
sudo apt-add-repository ppa:brightbox/ruby-ng
|
|
8
|
-
sudo apt-get update
|
|
9
|
-
sudo apt-get install -y ruby2.3
|
|
10
|
-
sudo gem install bundler
|
|
11
|
-
|
|
12
|
-
# Gemfile
|
|
13
|
-
cd /vagrant
|
|
14
|
-
bundle install
|
|
15
|
-
EOF
|
|
16
|
-
end
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
module Scripto
|
|
2
|
-
module PrintCommands
|
|
3
|
-
RESET = "\e[0m".freeze
|
|
4
|
-
GREEN = "\e[1;37;42m".freeze
|
|
5
|
-
YELLOW = "\e[1;37;43m".freeze
|
|
6
|
-
RED = "\e[1;37;41m".freeze
|
|
7
|
-
|
|
8
|
-
attr_accessor :verbose
|
|
9
|
-
|
|
10
|
-
# Is verbose mode turned on?
|
|
11
|
-
def verbose?
|
|
12
|
-
!!@verbose
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Turn on verbose mode. #vbanner, #vputs and #vprintf will start printing
|
|
16
|
-
# now, and file ops will be printed too.
|
|
17
|
-
def verbose!
|
|
18
|
-
@verbose = true
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Print a colored banner to $stderr, but only if #verbose?.
|
|
22
|
-
def vbanner(str = nil)
|
|
23
|
-
banner(str) if verbose?
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Puts to $stderr, but only if #verbose?.
|
|
27
|
-
def vputs(str = nil)
|
|
28
|
-
$stderr.puts(str) if verbose?
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Printf to $stderr, but only if #verbose?.
|
|
32
|
-
def vprintf(str, *args)
|
|
33
|
-
$stderr.printf(str, *args) if verbose?
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Print a colored banner to $stderr in green.
|
|
37
|
-
def banner(str, color: GREEN)
|
|
38
|
-
now = Time.new.strftime('%H:%M:%S')
|
|
39
|
-
s = "#{str} ".ljust(72, ' ')
|
|
40
|
-
$stderr.puts "#{color}[#{now}] #{s}#{RESET}"
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Print a yellow warning banner to $stderr.
|
|
44
|
-
def warning(str)
|
|
45
|
-
banner("Warning: #{str}", color: YELLOW)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Print a red error banner to $stderr, then exit.
|
|
49
|
-
def fatal(str)
|
|
50
|
-
banner(str, color: RED)
|
|
51
|
-
exit(1)
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
data/test/helper.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require 'fileutils'
|
|
2
|
-
require 'minitest/autorun'
|
|
3
|
-
require 'minitest/pride'
|
|
4
|
-
|
|
5
|
-
$LOAD_PATH << File.expand_path('../lib', __dir__)
|
|
6
|
-
require 'scripto'
|
|
7
|
-
|
|
8
|
-
module Helper
|
|
9
|
-
TMP_DIR = '/tmp/_scripto_test'.freeze
|
|
10
|
-
|
|
11
|
-
# attr_accessor :main
|
|
12
|
-
|
|
13
|
-
def setup
|
|
14
|
-
# self.main = Scripto::Main.new
|
|
15
|
-
FileUtils.rm_rf(TMP_DIR)
|
|
16
|
-
FileUtils.mkdir_p(TMP_DIR)
|
|
17
|
-
@pwd = Dir.pwd
|
|
18
|
-
Dir.chdir(TMP_DIR)
|
|
19
|
-
Scripto.verbose = false
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def teardown
|
|
23
|
-
FileUtils.rm_rf(TMP_DIR)
|
|
24
|
-
Dir.chdir(@pwd)
|
|
25
|
-
end
|
|
26
|
-
end
|
data/test/test_csv.rb
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
require_relative 'helper'
|
|
2
|
-
|
|
3
|
-
class TestCsv < Minitest::Test
|
|
4
|
-
include Helper
|
|
5
|
-
|
|
6
|
-
FILE = 'test.csv'.freeze
|
|
7
|
-
|
|
8
|
-
ROWS = [ { a: '1', b: '2', c: '3' }, { a: '4', b: '5', c: '6' } ].freeze
|
|
9
|
-
ROWS_EXP = "a,b,c\n1,2,3\n4,5,6\n".freeze
|
|
10
|
-
ROWS_REVERSED_EXP = "c,b,a\n3,2,1\n6,5,4\n".freeze
|
|
11
|
-
|
|
12
|
-
def test_types
|
|
13
|
-
assert_equal(ROWS_EXP, Scripto.csv_to_s(ROWS))
|
|
14
|
-
assert_equal(ROWS_EXP, Scripto.csv_to_s(structs))
|
|
15
|
-
assert_equal(ROWS_EXP, Scripto.csv_to_s(ostructs))
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_cols
|
|
19
|
-
assert_equal(ROWS_REVERSED_EXP, Scripto.csv_to_s(ROWS, cols: %i[c b a]))
|
|
20
|
-
assert_equal(ROWS_REVERSED_EXP, Scripto.csv_to_s(structs, cols: %i[c b a]))
|
|
21
|
-
assert_equal(ROWS_REVERSED_EXP, Scripto.csv_to_s(ostructs, cols: %i[c b a]))
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def test_csv_stdout
|
|
25
|
-
assert_output(ROWS_EXP) { Scripto.csv_to_stdout(ROWS) }
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def test_csv_read_write
|
|
29
|
-
Scripto.csv_write(FILE, ROWS)
|
|
30
|
-
assert_equal(ROWS_EXP, File.read(FILE))
|
|
31
|
-
assert_equal(ROWS, Scripto.csv_read(FILE).map(&:to_h))
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def test_gz
|
|
35
|
-
Scripto.csv_write(FILE, ROWS)
|
|
36
|
-
Scripto.run("gzip #{FILE}")
|
|
37
|
-
assert_equal(ROWS, Scripto.csv_read("#{FILE}.gz").map(&:to_h))
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_bom
|
|
41
|
-
assert_equal('apple', Scripto.csv_read(write_bom).first.fruit)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def test_gz_with_bom
|
|
45
|
-
skip # this doesn't work yet
|
|
46
|
-
path = write_bom
|
|
47
|
-
Scripto.run("gzip #{path}")
|
|
48
|
-
assert_equal('apple', Scripto.csv_read("#{path}.gz").first.fruit)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
protected
|
|
52
|
-
|
|
53
|
-
def structs
|
|
54
|
-
klass = Struct.new(*ROWS.first.keys)
|
|
55
|
-
ROWS.map { |i| klass.new(*i.values) }
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def ostructs
|
|
59
|
-
ROWS.map { |i| OpenStruct.new(i) }
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def write_bom
|
|
63
|
-
CSV.open(FILE, 'w') do |csv|
|
|
64
|
-
csv.to_io.write "\uFEFF" # bom
|
|
65
|
-
csv << %w[fruit]
|
|
66
|
-
csv << %w[apple]
|
|
67
|
-
end
|
|
68
|
-
FILE
|
|
69
|
-
end
|
|
70
|
-
end
|
data/test/test_file.rb
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
require_relative 'helper'
|
|
2
|
-
|
|
3
|
-
class TestFile < Minitest::Test
|
|
4
|
-
include Helper
|
|
5
|
-
|
|
6
|
-
DIR = 'dir'.freeze
|
|
7
|
-
SRC, DST = 'src.txt', 'dst.txt'
|
|
8
|
-
SRC2, DST2 = 'src2.txt', 'dst2.txt'
|
|
9
|
-
|
|
10
|
-
def setup
|
|
11
|
-
super
|
|
12
|
-
File.write(SRC, 'something')
|
|
13
|
-
File.write(SRC2, 'another thing')
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
#
|
|
17
|
-
# basics
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
def test_mkdir
|
|
21
|
-
Scripto.mkdir(DIR)
|
|
22
|
-
assert(File.directory?(DIR))
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_mkdir_mode
|
|
26
|
-
Scripto.mkdir(DIR, mode: 0o644)
|
|
27
|
-
assert_equal(0o644, File.stat(DIR).mode & 0o644)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def test_cp
|
|
31
|
-
Scripto.cp(SRC, DST)
|
|
32
|
-
assert_equal(File.read(SRC), File.read(DST))
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def test_cp_mode
|
|
36
|
-
Scripto.cp(SRC, DST, mode: 0o644)
|
|
37
|
-
assert_equal(0o644, File.stat(DST).mode & 0o644)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_cp_mkdir
|
|
41
|
-
in_dir = "#{DIR}/in_dir"
|
|
42
|
-
Scripto.cp(SRC, in_dir, mkdir: true)
|
|
43
|
-
assert_equal(File.read(SRC), File.read(in_dir))
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def test_mv
|
|
47
|
-
Scripto.mv(SRC, DST)
|
|
48
|
-
assert_equal('something', File.read(DST))
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def test_mv_mkdir
|
|
52
|
-
in_dir = "#{DIR}/in_dir"
|
|
53
|
-
Scripto.mv(SRC, in_dir, mkdir: true)
|
|
54
|
-
assert_equal('something', File.read(in_dir))
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def test_ln
|
|
58
|
-
Scripto.ln(SRC, DST)
|
|
59
|
-
assert_equal(SRC, File.readlink(DST))
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def test_rm
|
|
63
|
-
Scripto.rm(SRC)
|
|
64
|
-
assert(!File.exist?(SRC))
|
|
65
|
-
Scripto.rm('this_file_doesnt_exist') # shouldn't complain
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
#
|
|
69
|
-
# if necessary (this is useful for printing)
|
|
70
|
-
#
|
|
71
|
-
|
|
72
|
-
def test_if_necessary
|
|
73
|
-
# should return true
|
|
74
|
-
assert Scripto.mkdir_if_necessary(DIR)
|
|
75
|
-
assert Scripto.cp_if_necessary(SRC, DST)
|
|
76
|
-
assert Scripto.ln_if_necessary(SRC, DST2)
|
|
77
|
-
|
|
78
|
-
assert(File.directory?(DIR))
|
|
79
|
-
assert_equal(File.read(SRC), File.read(DST))
|
|
80
|
-
assert_equal(SRC, File.readlink(DST2))
|
|
81
|
-
|
|
82
|
-
# should be silent
|
|
83
|
-
assert_fu_output(nil, '') do
|
|
84
|
-
assert_nil Scripto.mkdir_if_necessary(DIR)
|
|
85
|
-
assert_nil Scripto.cp_if_necessary(SRC, DST)
|
|
86
|
-
assert_nil Scripto.ln_if_necessary(SRC, DST2)
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def test_cp_if_necessary_differs
|
|
91
|
-
File.write(DST, 'this is different')
|
|
92
|
-
assert_fu_output(nil, "cp -rp #{SRC} #{DST}\n") do
|
|
93
|
-
assert Scripto.cp_if_necessary(SRC, DST)
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def test_ln_if_necessary_differs
|
|
98
|
-
File.symlink(SRC2, DST)
|
|
99
|
-
assert_fu_output(nil, "rm -f #{DST}\nln -sf #{SRC} #{DST}\n") do
|
|
100
|
-
assert Scripto.ln_if_necessary(SRC, DST)
|
|
101
|
-
assert_equal(SRC, File.readlink(DST))
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def test_chmod
|
|
106
|
-
Scripto.chmod(SRC, 0o644)
|
|
107
|
-
assert_equal(0o644, File.stat(SRC).mode & 0o644)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def test_rm_and_mkdir
|
|
111
|
-
Dir.mkdir(DIR)
|
|
112
|
-
File.write("#{DIR}/file", 'this is a test')
|
|
113
|
-
assert Dir["#{DIR}/*"].length == 1
|
|
114
|
-
Scripto.rm_and_mkdir(DIR)
|
|
115
|
-
assert Dir["#{DIR}/*"].empty?
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def test_copy_metadata
|
|
119
|
-
File.chmod(0o644, SRC)
|
|
120
|
-
File.utime(1234, 5678, SRC)
|
|
121
|
-
Scripto.copy_metadata(SRC, SRC2)
|
|
122
|
-
assert_equal(0o644, File.stat(SRC2).mode & 0o644)
|
|
123
|
-
assert_equal(1234, File.stat(SRC2).atime.to_i)
|
|
124
|
-
assert_equal(5678, File.stat(SRC2).mtime.to_i)
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
#
|
|
128
|
-
# chown rests - must be root
|
|
129
|
-
#
|
|
130
|
-
|
|
131
|
-
def test_mkdir_owner
|
|
132
|
-
skip if !root?
|
|
133
|
-
Scripto.mkdir(DIR, owner: 'nobody')
|
|
134
|
-
assert(Etc.getpwnam('nobody').uid, File.stat(DIR).uid)
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
def test_cp_owner
|
|
138
|
-
skip if !root?
|
|
139
|
-
Scripto.cp(SRC, DST, owner: 'nobody')
|
|
140
|
-
assert(Etc.getpwnam('nobody').uid, File.stat(DST).uid)
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
def test_chown
|
|
144
|
-
skip if !root?
|
|
145
|
-
Scripto.chown(SRC, 'nobody')
|
|
146
|
-
assert(Etc.getpwnam('nobody').uid, File.stat(SRC).uid)
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
#
|
|
150
|
-
# atomic
|
|
151
|
-
#
|
|
152
|
-
|
|
153
|
-
def test_atomic
|
|
154
|
-
Scripto.atomic_write(SRC) { |f| f.write('xyzzy') }
|
|
155
|
-
assert_equal 'xyzzy', File.read(SRC)
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
def test_atomic_fail
|
|
159
|
-
assert_raises do
|
|
160
|
-
Scripto.atomic_write(SRC) do |f|
|
|
161
|
-
f.write('xyzzy')
|
|
162
|
-
raise 'uh oh'
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
# SRC should be unscathed
|
|
166
|
-
assert_equal 'something', File.read(SRC)
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
#
|
|
170
|
-
# verbosity
|
|
171
|
-
#
|
|
172
|
-
|
|
173
|
-
def test_mkdir_verbose
|
|
174
|
-
assert_fu_output(nil, "mkdir -p #{DIR}\n") do
|
|
175
|
-
Scripto.mkdir(DIR)
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
def test_cp_verbose
|
|
180
|
-
assert_fu_output(nil, "cp -rp #{SRC} #{DST}\n") do
|
|
181
|
-
Scripto.cp(SRC, DST)
|
|
182
|
-
end
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
def test_mv_verbose
|
|
186
|
-
assert_fu_output(nil, "mv #{SRC} #{DST}\n") do
|
|
187
|
-
Scripto.mv(SRC, DST)
|
|
188
|
-
end
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
def test_ln_verbose
|
|
192
|
-
assert_fu_output(nil, "ln -sf #{SRC} #{DST}\n") do
|
|
193
|
-
Scripto.ln(SRC, DST)
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
def test_rm_verbose
|
|
198
|
-
assert_fu_output(nil, "rm -f #{SRC}\n") do
|
|
199
|
-
Scripto.rm(SRC)
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
protected
|
|
204
|
-
|
|
205
|
-
def root?
|
|
206
|
-
if !defined?(@root)
|
|
207
|
-
@root = `whoami`.strip == 'root'
|
|
208
|
-
end
|
|
209
|
-
@root
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
def assert_fu_output(stdout = nil, stderr = nil)
|
|
213
|
-
Scripto.verbose!
|
|
214
|
-
assert_output(stdout, stderr) do
|
|
215
|
-
# FileUtils squirrels this away so we have to set it manually
|
|
216
|
-
FileUtils.instance_eval('@fileutils_output = $stderr')
|
|
217
|
-
yield
|
|
218
|
-
end
|
|
219
|
-
end
|
|
220
|
-
end
|