-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change description of configuration file, aquifer file
- Loading branch information
Showing
29 changed files
with
813 additions
and
1,490 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
package cmd | ||
|
||
import ( | ||
"fmt" | ||
"os" | ||
"time" | ||
|
||
"github.com/anoriqq/qpm/cmd/qpm/internal/config" | ||
"github.com/anoriqq/qpm/cmd/qpm/internal/git" | ||
"github.com/spf13/cobra" | ||
) | ||
|
||
func init() { | ||
rootCmd.AddCommand(aquiferCmd) | ||
} | ||
|
||
var aquiferCmd = &cobra.Command{ | ||
Use: "aquifer", | ||
Short: "Manage aquifer", | ||
} | ||
|
||
func init() { | ||
aquiferPullCmd := &cobra.Command{ | ||
Use: "pull", | ||
Short: "Get aquifer form remote repository", | ||
RunE: func(_ *cobra.Command, _ []string) error { | ||
path, err := config.InitConfigFile() | ||
if err != nil { | ||
return err | ||
} | ||
|
||
c, err := config.ReadConfig(path) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
oldDir := fmt.Sprintf("%s.old_%s", c.AquiferPath, time.Now().Format("20060102150405")) | ||
if err := os.Rename(c.AquiferPath, oldDir); err != nil && !os.IsNotExist(err) { | ||
return err | ||
} | ||
|
||
cl, err := git.NewClient(c.GitHubUsername, c.GitHubToken) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if err = cl.Clone(c.AquiferPath, c.AquiferRemote.String()); err != nil { | ||
return err | ||
} | ||
|
||
return nil | ||
}, | ||
} | ||
|
||
aquiferCmd.AddCommand(aquiferPullCmd) | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,167 @@ | ||
package cmd | ||
|
||
import ( | ||
"fmt" | ||
"net/url" | ||
|
||
"github.com/anoriqq/qpm" | ||
"github.com/anoriqq/qpm/cmd/qpm/internal/config" | ||
"github.com/anoriqq/qpm/cmd/qpm/internal/survey" | ||
"github.com/spf13/cobra" | ||
) | ||
|
||
func init() { | ||
var isInit bool | ||
var isClear bool | ||
|
||
configCmd := &cobra.Command{ | ||
Use: "config", | ||
Short: "Manage qpm config", | ||
Example: ` # Set aquifer.path to ~/.qpm | ||
qpm config aquifer.path ~/.qpm`, | ||
Args: cobra.MaximumNArgs(1), | ||
RunE: func(_ *cobra.Command, args []string) error { | ||
if isClear { | ||
return config.ClearConfigFile() | ||
} | ||
|
||
path, err := config.InitConfigFile() | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if isInit { | ||
current, err := config.ReadConfig(path) | ||
if err != nil { | ||
return err | ||
} | ||
var c qpm.Config | ||
if v, err := SurveyAquiferPath(¤t.AquiferPath); err != nil { | ||
return err | ||
} else { | ||
c.AquiferPath = v | ||
} | ||
if v, err := SurveyAquiferRemote(current.AquiferRemote); err != nil { | ||
return err | ||
} else { | ||
c.AquiferRemote = v | ||
} | ||
if v, err := SurveyGitHubUsername(¤t.GitHubUsername); err != nil { | ||
return err | ||
} else { | ||
c.GitHubUsername = v | ||
} | ||
if v, err := SurveyGitHubToken(¤t.GitHubToken); err != nil { | ||
return err | ||
} else { | ||
c.GitHubToken = v | ||
} | ||
if v, err := SurveyShell(¤t.Shell); err != nil { | ||
return err | ||
} else { | ||
c.Shell = v | ||
} | ||
return config.WriteConfig(c, path) | ||
} else { | ||
switch len(args) { | ||
case 0: | ||
fmt.Print(config.StringConfig(path, "")) | ||
return nil | ||
case 1: | ||
fmt.Print(config.StringConfig(path, args[0])) | ||
return nil | ||
default: | ||
return nil | ||
} | ||
} | ||
}, | ||
} | ||
|
||
configCmd.Flags().BoolVarP(&isInit, "init", "i", false, "Interalcive inisialization") | ||
configCmd.Flags().BoolVarP(&isClear, "clear", "", false, "Clear config file") | ||
rootCmd.AddCommand(configCmd) | ||
} | ||
|
||
func SurveyAquiferPath(current *string) (string, error) { | ||
msg := "Please enter qpm aquifer path." | ||
|
||
def := "$HOME/.qpm" | ||
if current != nil && *current != "" { | ||
def = *current | ||
} | ||
|
||
v, err := survey.AskOneInputRequired(msg, def) | ||
if err != nil { | ||
return "", err | ||
} | ||
|
||
return v, nil | ||
} | ||
|
||
func SurveyAquiferRemote(current *url.URL) (*url.URL, error) { | ||
msg := "Please enter qpm aquifer repository full URL." | ||
|
||
def := "" | ||
if current != nil && current.String() != "" { | ||
def = current.String() | ||
} | ||
|
||
raw, err := survey.AskOneInputRequired(msg, def) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
v, err := url.Parse(raw) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
return v, nil | ||
} | ||
|
||
func SurveyGitHubUsername(current *string) (string, error) { | ||
msg := "Please enter GitHub username." | ||
|
||
def := "" | ||
if current != nil && *current != "" { | ||
def = *current | ||
} | ||
|
||
v, err := survey.AskOneInputRequired(msg, def) | ||
if err != nil { | ||
return "", err | ||
} | ||
|
||
return v, nil | ||
} | ||
|
||
func SurveyGitHubToken(current *string) (string, error) { | ||
msg := "Please enter GitHub access token. If nothing is enterd, the current config will be taken over." | ||
|
||
v, err := survey.AskOnePassword(msg) | ||
if err != nil { | ||
return "", err | ||
} | ||
|
||
if current != nil && v == "" { | ||
return *current, nil | ||
} | ||
|
||
return v, nil | ||
} | ||
|
||
func SurveyShell(current *string) (string, error) { | ||
msg := "Please enter shell command you want to use to execute stratum." | ||
|
||
def := "bash" | ||
if current != nil && *current != "" { | ||
def = *current | ||
} | ||
|
||
v, err := survey.AskOneInputRequired(msg, def) | ||
if err != nil { | ||
return "", err | ||
} | ||
|
||
return v, nil | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package cmd | ||
|
||
import ( | ||
"github.com/anoriqq/qpm" | ||
"github.com/anoriqq/qpm/cmd/qpm/internal/config" | ||
"github.com/spf13/cobra" | ||
) | ||
|
||
func init() { | ||
var aquiferPath string | ||
|
||
installCmd := &cobra.Command{ | ||
Use: "install", | ||
Short: "Install specifc package", | ||
Example: ` # Install foo package | ||
qpm install foo`, | ||
Args: cobra.RangeArgs(1, 2), | ||
RunE: func(_ *cobra.Command, args []string) error { | ||
path, err := config.InitConfigFile() | ||
if err != nil { | ||
return err | ||
} | ||
|
||
c, err := config.ReadConfig(path) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if aquiferPath != "" { | ||
c.AquiferPath = aquiferPath | ||
} | ||
|
||
s, err := qpm.ReadStratum(c, args[0]) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
return qpm.Execute(c, s, qpm.Install) | ||
}, | ||
} | ||
|
||
installCmd.PersistentFlags().StringVarP(&aquiferPath, "aquifer", "a", "", "Aquifer directory path") | ||
rootCmd.AddCommand(installCmd) | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package cmd | ||
|
||
import ( | ||
"github.com/anoriqq/qpm" | ||
"github.com/spf13/cobra" | ||
) | ||
|
||
var rootCmd = &cobra.Command{ | ||
Use: "qpm", | ||
Short: "Qanat Package Manager", | ||
Version: qpm.Version(), | ||
} | ||
|
||
func Execute() error { | ||
return rootCmd.Execute() | ||
} |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package cmd | ||
|
||
import ( | ||
"github.com/anoriqq/qpm" | ||
"github.com/anoriqq/qpm/cmd/qpm/internal/config" | ||
"github.com/spf13/cobra" | ||
) | ||
|
||
func init() { | ||
var aquiferPath string | ||
|
||
uninstallCmd := &cobra.Command{ | ||
Use: "uninstall", | ||
Short: "Unnstall specifc package", | ||
Example: ` # Uninstall foo package | ||
qpm uninstall foo`, | ||
Args: cobra.RangeArgs(1, 2), | ||
RunE: func(_ *cobra.Command, args []string) error { | ||
path, err := config.InitConfigFile() | ||
if err != nil { | ||
return err | ||
} | ||
|
||
c, err := config.ReadConfig(path) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if aquiferPath != "" { | ||
c.AquiferPath = aquiferPath | ||
} | ||
|
||
s, err := qpm.ReadStratum(c, args[0]) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
return qpm.Execute(c, s, qpm.Uninstall) | ||
}, | ||
} | ||
|
||
uninstallCmd.PersistentFlags().StringVarP(&aquiferPath, "aquifer", "a", "", "Aquifer directory path") | ||
rootCmd.AddCommand(uninstallCmd) | ||
} |
Oops, something went wrong.